gpt4 book ai didi

dart - 是否可以从动态变量实例化一个类?

转载 作者:行者123 更新时间:2023-12-03 02:44:45 25 4
gpt4 key购买 nike

我有许多相同基本类型的对象。我想构建一个通用函数来创建它们。代码示例:

class Grid extends Display { ....
class Start extends Display { ....

class MainClass {
Grid grid;
Start start;
....
}

在 MainClass 方法中,而不是这样:

start = new Start();
start.load(PATH);

grid = new Grid();
grid.load(PATH);

....

我想做这样的事情:

void _newDisplay(dynamicType, Display display) {
display = new dynamicType();
display.load(PATH);
}

_newDisplay(Start, start);
_newDisplay(Grid, grid);

....

我读了 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);

另见 What are some good workarounds for dart's lack of static typing semantics?

关于dart - 是否可以从动态变量实例化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com