我在可比较元素列表上定义了以下扩展方法:
extension ComparableList<T extends Comparable<T>> on List<T> {
int doSomething() {
// This is just an example
return this.first.compareTo(this.last);
}
}
然后,我尝试在List<num>
上使用它。 num
的定义是abstract class num implements Comparable<num>
,所以我认为应该可以。
class Example<T extends num> {
final List<T> list;
Example(this.list) {
list.doSomething(); // This throws "error: The method 'doSomething' isn't defined for the class 'List'."
}
}
如果我将扩展方法的定义更改为extension ComparableList<T extends num> on List<T>
,则一切正常,但我希望为所有可比较的类定义该方法。
答案 0 :(得分:1)
更改
extension ComparableList<T extends Comparable<T>> on List<T>
到
extension ComparableList<T extends Comparable<T>> on List<Comparable<T>>
以便Dart知道类型。