我有许多相同基本类型的对象。我想构建一个通用函数来创建它们。代码示例:
class Grid extends Display { ....
class Start extends Display { ....
class MainClass {
Grid grid;
Start start;
....
}
Run Code Online (Sandbox Code Playgroud)
在 MainClass 方法中,而不是这样:
start = new Start();
start.load(PATH);
grid = new Grid();
grid.load(PATH);
....
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
void _newDisplay(dynamicType, Display display) {
display = new dynamicType();
display.load(PATH);
}
_newDisplay(Start, start);
_newDisplay(Grid, grid);
....
Run Code Online (Sandbox Code Playgroud)
我读了http://www.dartlang.org/articles/optional-types/但没有找到我想要的。
我还发现Instantiate a class from a string但有一条评论说:“注意:编译为 JavaScript 时这可能不起作用。dart2js 编译器尚未完全支持镜像。”。这种“镜像”解决方案是唯一可用于进行动态实例化的解决方案吗?
Dart 不支持直接的方法来做到这一点。通常我们通过提供一个为我们实例化类型的闭包来解决这个问题:
void _newDisplay(dynamicType, Display display) {
display = dynamicType();
display.load(PATH);
}
_newDisplay(() => Start(), start);
_newDisplay(() => Grid(), grid);
Run Code Online (Sandbox Code Playgroud)
另请参阅针对 dart 缺乏静态类型语义的问题有哪些好的解决方法?
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |