如何在Java中动态创建对象的新实例?
我有一个名为如何在Java中动态创建对象的新实例?,java,Java,我有一个名为GetInput.java 我有一个名为GetNotReleasedInput.java的类。 我在GetNotReleasedInput中扩展GetInput。 在GetInput中,我调用一个名为addLineToArray()的私有函数 在这个函数中,我定义了一个新类,它包含有关导入的详细信息 但是,由于我正在为所有输入文件创建一个通用类(GetInput), 我不能在addLineToArray()中说: 因为我有AA/未发布,在这种情况下,它不应该发布。 那么,如何在该函数
GetInput.java
我有一个名为GetNotReleasedInput.java
的类。
我在GetNotReleasedInput
中扩展GetInput
。
在GetInput
中,我调用一个名为addLineToArray()的私有函数
在这个函数中,我定义了一个新类,它包含有关导入的详细信息
但是,由于我正在为所有输入文件创建一个通用类(GetInput
),
我不能在addLineToArray()
中说:
因为我有AA/未发布,在这种情况下,它不应该发布。
那么,如何在该函数中动态生成新的nextData
?默认情况下,Java不允许在运行时修改元数据。您可以使用编写自己的类加载器,并在类加载时修改字节码,但这可能不是您想要的
相反,我建议您的所有类数据类都实现Iterable
或类似的东西,这样您就可以轻松地连接并迭代所有行,而不知道实际的类型。听起来您可能想要一个虚拟的对象,您可以将对象创建放在其中。在addLineToArray()
中,然后调用
虚拟的createLineObject()
而不是new AAData()
但是,具体的方法取决于许多因素:创建的数据类型取决于GetInput
类,还是这是一个单独的决定(您的GetInput
类可能因行为而异,而数据可能因格式而异)?是否所有数据都相关(例如继承自AAData
)
您应该添加更多关于您试图完成的任务的详细信息。或者您为创建nextData
对象创建了一个受保护的方法,以便子类可以决定如何进行制造,或者您有某种工厂对象(可在外部对象创建时配置)委托给它。实现后者的最简单方法是传入一个类
并调用其newInstance()
方法,但可能会有更多的复杂性;一本关于软件模式的书将深入探讨这一点
但是如果您可以将整个任务委托给GetInput
的子类,那么这是最简单的。(您没有提供足够的信息,我无法确定您实际应该使用哪种模式。)我按照您所说的方式移动了该方法,然后它成功了。我还将原来的方法改为抽象。谢谢
AAData nextData = new AAData();