如何在Dart中创建一个返回子类型而没有泛型类型的方法?

时间:2014-02-05 15:26:30

标签: generics dart

我有两个类,一个父类和一个子类,父类有一个返回子实例的方法。

使用泛型类型,我可以这样做:

import "dart:mirrors";

class Parent<T extends Parent> {
  T anotherMe() {
    var classMirror = reflectClass(this.runtimeType);
    var instance = classMirror.newInstance(new Symbol(""), []).reflectee;
    return instance;
  }
}

class Child extends Parent<Child> {
}

为了测试它,我写了这段代码:

main() {
  Child child = new Child();
  var another = child.anotherMe();
  print(another);
}

打印哪些:

Instance of 'Child'

但如果我不希望Parent使用泛型类型怎么办? E.g:

class Parent {
    Type childType;
    Parent() {
        childType = this.runtimeType;
    }
    childType anotherMe() {
        var classMirror = reflectClass(this.runtimeType);
        var instance = classMirror.newInstance(new Symbol(""), []).reflectee;
        return instance;
    }
}

代码无法编译(当然),但你可以得到我的想法。我问这个是因为我知道scala提供了类似的东西:

def anotherMe: this.type = {}

我发现它有时很有用,并且想知道我是否可以在Dart中做同样的事情

0 个答案:

没有答案