我想知道是否有可能动态扩展课程,我是Dart的新手,我正在寻找类似的东西(请忘记$ {whatever}仅用于说明目的) :
class MyClass extends ${otherClass}
让我们说我试图从另一个函数中实例化它:
var myDinamic = new myClass<otherClass>
希望这有意义,并提前感谢!
答案 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>();
}
但是类型参数也需要静态定义。您不能将变量用作泛型类型参数。