这种通用类型

时间:2016-12-07 12:20:01

标签: generics dart

我们有一些类层次结构,需要在返回类型为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中做到这一点?

1 个答案:

答案 0 :(得分:4)

我认为这只是强模式中缺少的功能。

我只用

得到错误
analyzer:
  strong-mode:
    implicit-casts: false

这是不久前添加的。

DartPad中,即使启用了Strong mode也没有错误。

相关问题