如何在 Dart 中专门化(覆盖)class 字段?
How specialize (override) class fields in Dart?
当 扩展 或 实施 时,我想 专门化字段 (覆盖) 在 Dart 2 中。
见代码:
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=' ('(List) → void') isn't a valid override of
'Abase.bbases=' ('(List) → void').
- 是否有不接受该字段专业化的原因?
- 是否有另一种方法可以专门化
extends
上的字段或
implements
?
你必须使用泛型:
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;
}
当 扩展 或 实施 时,我想 专门化字段 (覆盖) 在 Dart 2 中。
见代码:
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=' ('(List) → void') isn't a valid override of 'Abase.bbases=' ('(List) → void').
- 是否有不接受该字段专业化的原因?
- 是否有另一种方法可以专门化
extends
上的字段或implements
?
你必须使用泛型:
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;
}