在Dart 2中扩展{em> 或实现 class
时,我想专门化字段(改写)。
查看代码:
abstract class Abase {
String id;
List<Bbase> bbases;
}
abstract class Bbase {
String id;
}
class A implements Abase {
String id;
String name;
List<B> bbases; // 'A.bbases=' ('(List<B>) → void') isn't a valid override of 'Abase.bbases=' ('(List<Bbase>) → void').
}
class B implements Bbase {
String id;
}
class Abase
具有通用字段List<Bbase> bbase
,在class A
中,我想用List<B> bbase
专门设置此字段。
但这是不可能的。此错误显示在analyzer
或build_runner
上:
'A.bbases ='('((列表)→无效'))不是有效的替代 'Abase.bbases ='('((列表)→无效')。)
extends
上的字段吗?
implements
?答案 0 :(得分:1)
您必须使用泛型:
abstract class Abase<T extends Bbase> {
String id;
List<T> bbases;
}
abstract class Bbase {
String id;
}
class A implements Abase<B> {
String id;
String name;
List<B> bbases;
}
class B implements Bbase {
String id;
}