gpt4 book ai didi

java - 从对象实例实例化对象

转载 作者:行者123 更新时间:2023-11-29 05:12:46 25 4
gpt4 key购买 nike

我正在创建一个游戏,其中角色可以附加模块以提供额外的功能,例如,可能有一个“银行家”模块用于监听点击事件并打开银行菜单。用户可以通过扩展 Module 类并使用 ModuleFactory 注册实例来创建模块。当在构造函数中传递时,模块能够对自身进行序列化并从序列化形式(保存为 XML)加载自身。

我遇到的问题是,在加载模块时,我有每个模块的名称和一个实例,但我无法为每个模块创建一个新实例。

在每个返回模块实例的模块中创建一个 newInstance() 方法是否可以接受?我知道可以为此使用反射,但大多数时候我发现反射带来的麻烦多于我从中获得的好处。

最佳答案

这样做是可能的,因为您说过您已经知道每个 Module 的名称(希望在某种列表中)。

Class<?> temp = Class.forName("ModuleName");
Object obj = temp.newInstance();

这其实就是反射。


最初我有这个,但我上面的代码更好,因为这将要求您有一个方法在每个 Module 中创建一个新实例。它有效,但它很困惑。把它想象成这样,一个创建自身克隆的对象,这很奇怪。

public static Module createInstance()
{
return new ThisModule();
}

关于java - 从对象实例实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27775891/

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