【发布时间】:2020-10-01 16:42:57
【问题描述】:
我有一个带有构造函数的类,我需要按名称对其进行初始化。
public class Wall extends Tile
{
public Wall(double x, double y, double[] data)
{
super();
}
}
Tile 是一个抽象类,它的构造函数是空的。
我可以用这个来初始化这个类
Class.forName("Wall").newInstance();
如果我想在启动类时传递参数,我可以使用
Constructor<?> c = Class.forName("Wall").getConstructor(param);
c.newInstance(Paramater values ie. "String");
至于param,就看你传递的是什么类型的参数了。
int:Integer.TYPE
double : Double.TYPE
String : String.class
stackoverflow 上的这篇文章帮助我处理了这些参数 Initializing a class with Class.forName() and which have a constructor which takes arguments
但我的问题是如何传递数组参数。即double[]?
我尝试过Double[].class,但抛出了ThreadNotFoundException。
任何帮助将不胜感激。
【问题讨论】:
-
你能提交“NAME”类吗?或者至少发布它的构造函数代码
-
是的。这对上下文很有用。帖子已更新以包含该课程。
-
我想这里真正的问题是“为什么?”。您正在使您的代码变得超级复杂,使用在 Java 世界中通常不被接受的方法。解释你为什么要这样做,也许我们可以找到一种方法让它变得更简单?
-
我已经在帖子中解释了我需要帮助的地方。我不需要解释“为什么”我这样做。我只是。
标签: java class parameters initialization