跳過主內容

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 {}