У нас есть иерархия классов, и нам нужно реализовать метод базового класса, тип возврата которого равен this.runtimeType
. В Java выполняется с использованием общего параметра class Base extends <This extends Base<This>>
. В Dart работает тоже хорошо:Этот общий тип
class A<This extends A<This>> {
This copy() => //...
}
class B extends A<B> {}
A a = new A(); // ok
A ab = new B(); // ok
B b = new B(); // ok
, но пока у вас есть нет не абстрактные родительские классы:
A a2 = new A().copy(); // Unsound implicit cast from A<dynamic> to A<A<dynamic>>
И, конечно, мы не можем указать общий параметр для А здесь явно - это рекурсивная , Это какая-то ошибка, или есть другой способ сделать это в Дарт?
dartanalyzer version 1.20.1, предупреждение с 'анализатором: сильный режим: истинный' только. –
Сильный режим - это работа. –
Даже если это одна из черт дротика, я думаю :) –