我们有一些类层次结构,需要在返回类型为this.runtimeType
的基类方法中实现。在Java中使用泛型参数class Base extends <This extends Base<This>>
完成。在达特它也可以正常工作:
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>>
当然,我们不能在这里明确指定A的泛型参数 - 它是递归的。这是一种错误,还是有另一种方法在Dart中做到这一点?
答案 0 :(得分:4)
我认为这只是强模式中缺少的功能。
我只用
得到错误analyzer:
strong-mode:
implicit-casts: false
这是不久前添加的。
在DartPad中,即使启用了Strong mode
也没有错误。