0

我知道这个问题有一段时间会得到回答。但参数始终是一个对象。那就是我要替换的:

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

4 回答 4

5

你需要

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

有些Class对象反映在原始类型上,甚至void类型在Void.class.

于 2013-06-03T12:40:49.857 回答
1

你需要使用:

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

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

于 2013-06-03T12:40:32.430 回答
1

如果 x 和 y 是int,尝试getConstructor通过传递预期参数的类型来调用:

Class cl = Class.forName(s);
Constructor con = cl.getConstructor (Integer.TYPE, Integer.TYPE);
obj = con.newInstance(x, y);
于 2013-06-03T12:43:56.533 回答
0

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

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

或者

 Constructor con = cl.getConstructor (ClassOfX.class, ClassOfY.class);
于 2013-06-03T12:40:37.740 回答