[英]How can I create a new instance of array dynamically if my array size is full in java
[英]How can I dynamically create a new instance of an object in Java?
我有一个名为GetInput.java
的类,还有一个名为GetNotReleasedInput.java
的类。 我在GetNotReleasedInput
扩展了GetInput
。 在GetInput
,我调用一个名为addLineToArray()
的私有函数,并在该函数中定义一个新类,其中包含有关导入的详细信息。
但是,由于我正在为所有输入文件创建一个通用类( GetInput
),所以我不能在addLineToArray()
说:
AAData nextData = new AAData();
因为我有AA /未发布,因此在这种情况下,它应该不发布。 那么,如何在该函数中动态创建新的nextData
呢?
您可以使用受保护的方法来创建nextData
对象,以便子类可以决定如何进行制造,或者您可以将某种工厂对象(可在外部对象创建时进行配置)委托给该对象。 做后者的最简单的方法是在传递Class
,并调用它newInstance()
方法,但还有很多更复杂可能; 关于软件模式的书将对此进行深入的探讨。
但是,如果您可以将整个事情委托给GetInput
的子类,那么这是最简单的。 (您没有为我提供足够的信息,无法确定您应该实际使用的模式。)
听起来您可能想要一个虚拟工厂方法 ,可以在其中放置对象创建对象。 在addLineToArray()
你再调用虚拟createLineObject()
而不是new AAData()
但是,究竟要走的路取决于许多因素:创建的数据类型取决于GetInput
类,还是该决定是单独的(您的GetInput
类可能因行为而异,而数据随格式而异)? 是否所有数据都相关(例如,继承自AAData
)?
您应该添加有关您要完成的任务的更多详细信息。
Java默认情况下不允许在运行时修改元数据。 您可以使用asm编写自己的类加载器,并在类加载时修改字节码,但这可能不是您想要的。
相反,我建议您所有的类数据类都实现Iterable
或类似的东西,以便您可以轻松地然后联接并遍历所有行,而无需知道实际的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.