如何在带有参数的字符串中动态创建java中的实例?

时间:2013-06-03 12:38:00

标签: java

我知道这个问题已经回答了一段时间。但是参数一直是一个对象。 这就是我想要替换的东西:

if (s.equals("A")) { add (obj = new A(x,y)); }
if (s.equals("B")) { add (obj = new B(x,y)); }
if (s.equals("C")) { add (obj = new C(x,y)); }

我有这个:

try
{
    Class cl = Class.forName(s);
    Constructor con = cl.getConstructor (x, y);
    obj = con.newInstance(x, y);
}

但是它期望x,y作为一个类,但它是一个int。怎么做>

4 个答案:

答案 0 :(得分:5)

你需要

cl.getConstructor(int.class, int.class);

Class个对象反映原始类型,甚至void类型也在Void.class中反映了它。

答案 1 :(得分:1)

您需要使用:

cl.getConstructor(int.class,int.class);

获取带有(int,int)参数的构造函数。

答案 2 :(得分:1)

如果x和y为int,请尝试通过传递已删除参数的类型来调用getConstructor

Class cl = Class.forName(s);
Constructor con = cl.getConstructor (Integer.TYPE, Integer.TYPE);
obj = con.newInstance(x, y);

答案 3 :(得分:0)

您需要为getConstructor方法提供类型。那是

Constructor con = cl.getConstructor (x.getClass(), y.getClass());

 Constructor con = cl.getConstructor (ClassOfX.class, ClassOfY.class);