我知道这个问题已经回答了一段时间。但是参数一直是一个对象。 这就是我想要替换的东西:
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。怎么做>
答案 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);