Я хотел бы специализировать поля (переопределить), когда class
расширен или реализован в 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 =' ('(Список) → void') не является допустимой заменой 'Abase.bbases =' ('(Список) → void').
- Есть ли причина, по которой не принимает эту специализацию полей?
- Есть ли другой способ специализации полей на
extends
илиimplements
?
abstract class Abase<T> { String id; List<T> bbases; }
иclass A implements Abase<Bbase> {
- person Günter Zöchbauer   schedule 30.10.2018