如何在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();