跳过主内容

conflicting_generic_interfaces

类型为 {0} 的“{1}”无法同时实现“{2}”和“{3}”,因为它们的类型参数不同。

描述

#

当一个类试图多次实现同一个泛型接口,但类型参数的值不同时,分析器会产生此诊断。

示例

#

以下代码会产生此诊断,因为类 C 被定义为同时实现 I<int>(因为它继承自 A)和 I<String>(因为它实现了B),而 intString 不是相同的类型

dart
class I<T> {}
class A implements I<int> {}
class B implements I<String> {}
class C extends A implements B {}

常见修复方法

#

重构类型层次结构以避免这种情况。例如,您可以将其中一个或两个继承类型改为泛型,以便类 C 可以为两个类型参数指定相同的类型

dart
class I<T> {}
class A<S> implements I<S> {}
class B implements I<String> {}
class C extends A<String> implements B {}