我想从Type中定义的对象类型或从String中定义的对象名称创建Object。下面的示例使用String来保存对象类型。但我认为这并不那么优雅-即使使用Type,对于许多对象类型,此if块也会急剧增加...
我还没有找到一个更好的解决方案。我如何从指定的对象类型动态创建该对象?
if (model == 'Event') {
data = Event.fromMap(result);
}
else if (model == 'Content') {
data = Content.fromMap(result);
}
else if (...) {
// ...
}
2条答案
按热度按时间cunj1qz11#
这是另一种方法。
它的可伸缩性更强一些(因为只依赖于将类构造函数添加到Map中)。
解释:
这里我们正在创建测试类。没什么重要的。
这里我们定义了一个
Map
。为什么?因为它允许我们在常数时间内通过某个键访问某个值。在这种情况下,键是String 'Event','Content',但也可以是你想要的类型。为了简单起见,让它们是String。值是Function
的,在这个例子中,只获取一个_map
作为参数(因为例子中的Class构造函数需要一个参数_map
)。所以,如果你需要更多的类型,只添加类型和封装该类型的构造函数的函数。最后,你可以很容易地示例化这些类,只需要类型为string,并向函数传递你想要的值(在这个例子中是一个键为'test'的map)。
在你的例子中,会是这样的:
7vux5j2d2#
我也遇到了类似的问题。下面是我如何解决的:
创建类的对象:
现在我们可以利用obj对象来执行所需的操作
希望这能帮上忙