作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想保留一个字符串的常量映射到定义的类,这些类都继承自一个类 A:
class A {}
class B extends A {}
class C extends A {}
class D extends A {}
const strToType = {
'str1': B,
'str2': C,
'str3': C,
'str4': D,
// etc.
};
Map<String, Type>
的形式。 ,我什至尝试明确指出:
<String, Type>{ /*...*/ }
A variable = new strToType[someString](args);
strToType is not a class
.
strToType[someString]
在括号中,那么它会提示
new (
部分。
B
,
C
,
D
具有相同的构造接口(interface),并且不仅仅是 3 个类。
List<A>
,其中元素是
A
的特殊后代.
最佳答案
Dart Type
对象是表示类型的不透明标记。它们不是类型本身。
您不能使用 Type
需要类的对象,所以你不能做new TypeVar()
或 TypeVar.staticMember
.
如果您想存储一种创建子类对象的方法,则需要存储一个执行此操作的函数。
const strToType = <String, A Function(argTypes)> {
'str1': (args) => new A(args),
'str2': (args) => new C(args),
'str3': (args) => new C(args),
'str4': (args) => new D(args),
// etc.
};
A variable = strToType[someString](args);
关于dictionary - 有没有办法将字符串映射到 Dart 中的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53995746/
我是一名优秀的程序员,十分优秀!