动态扩展一个类

时间:2015-11-02 22:08:38

标签: dart

我想知道是否有可能动态扩展课程,我是Dart的新手,我正在寻找类似的东西(请忘记$ {whatever}仅用于说明目的) :

class MyClass extends ${otherClass}

让我们说我试图从另一个函数中实例化它:

var myDinamic = new myClass<otherClass>

希望这有意义,并提前感谢!

2 个答案:

答案 0 :(得分:2)

简而言之:不。 Dart要求所有类都有一个超类。您要求的是拥有一个更改其超类每个实例的类。那不是一个真正的单一类 - 不可能说出这个类有哪些成员,因为它实际上是一个选择超类的不同类。

答案 1 :(得分:0)

一个类扩展另一个类只能静态定义,但不能在运行时定义。最接近它的可能是使用泛型类型参数配置类型。

另见
- https://www.dartlang.org/docs/dart-up-and-running/ch02.html#generics
- http://blog.sethladd.com/2012/01/generics-in-dart-or-why-javascript.html

abstract class SomeInterface {}
class A implements SomeInterface {}
class B implements SomeInterface {}
class C<T extends SomeInterface> {
  T doSomething(T arg) { return arg; }
}
main() {
  new C<A>();
  new C<B>();
  // does NOT work
  // var t = A;
  // new C<t>();
}

但是类型参数也需要静态定义。您不能将变量用作泛型类型参数。