conflicting_generic_interfaces 진단: 타입 인자가 다른 제네릭 인터페이스 구현

conflicting_generic_interfaces 진단: 타입 인자가 다른 제네릭 인터페이스 구현

Dart 분석기가 만들어 내는 conflicting_generic_interfaces 진단에 대한 설명이에요.

출처: conflicting_generic_interfaces

본문

클래스가 제네릭 인터페이스를 여러 번 구현하려고 하는데, 그때 타입 인자의 값이 서로 같지 않으면 분석기가 이 진단을 만들어요.

예시

다음 코드는 CI<int>(왜냐하면 A를 확장하니까)와 I<String>(왜냐하면 B를 구현하니까)을 둘 다 구현하도록 정의되어 있는데, intString이 같은 타입이 아니어서 이 진단을 만들어요.

class I<T> {}

class A implements I<int> {}

class B implements I<String> {}

class C extends A implements B {}

흔한 해결 방법

타입 계층을 다시 정리해서 이런 상황을 피하면 돼요. 예를 들어, 상속된 타입 중 하나 또는 둘 다를 제네릭으로 만들어서 C가 두 타입 인자에 같은 타입을 지정할 수 있게 할 수 있어요.

class I<T> {}

class A<S> implements I<S> {}

class B implements I<String> {}

class C extends A<String> implements B {}

더 알아보기