假设我有一些Type
实例:
final strType = String;
final intType = int;
例如,我想初始化Type
的实例,
final myString = strType(); // myString is String()
或
final myInt = new intType(); // myInt is int()
但是,编译器提出了strType isn't a function
错误。
是否可以在Dart中初始化Type
的实例?
答案 0 :(得分:1)
这在语言级别是不可能的。反射是可能的,但是代码很复杂,要在网络上使用它或颤动它,需要代码生成。
可以考虑分配函数类型,而不是给变量分配insertLast
。 Type
是一个匿名函数,可以创建() => SomeClassName()
的实例。
答案 1 :(得分:0)
是的,这是可能的,但不适用于预定义的(内置)类型(类)。因为这些类型(类)可能不声明默认构造函数。
下面是如何使用用户定义的类型(通过类)的示例。
import 'dart:mirrors';
void main() {
var fooType = Foo;
var myFoo = reflectClass(fooType).newInstance(const Symbol(''), []).reflectee;
print(myFoo.baz);
}
class Foo {
int baz = 41;
}
结果:
41