我尝试了以下代码:
constructor = oneClass.getConstructor(new Class[]{String[].class});
return constructor.newInstance(new String[]{"String01","String02"})
(return语句返回IllegalArgumentException)
和
Class stringArray = Class.forName("[Ljava.lang.String;");
constructor = oneClass.getConstructor(new Class[]{stringArray})
return constructor.newInstance(new String[]{"String01","String02"})
(return语句返回IllegalArgumentException)
如何说我想用String []作为参数来实例化一个构造函数。
谢谢。
答案 0 :(得分:0)
这个怎么样:
constructor = oneClass.getConstructor(String[].class);
return constructor.newInstance(new Object[]{new String[]{"String01","String02"}})
假设您的构造函数是这样的:
public class OneClass
{
public OneClass(String[] args)
{
// ...
}
}
来源:Problem with constructing class using reflection and array arguments
答案 1 :(得分:0)
直接使用新的String []调用newInstance会使其混淆,因为它不确定新的String []是否是一个arg,或者是表示varargs的替代方法。通过将它分配给下面的Object“abc”,它肯定告诉编译器abc(表示String数组)是一个arg,arg0是准确的,而不是表示多个参数的varargs。
import java.lang.reflect.Constructor;
public class Test {
public Test(String[] args) {
System.out.println(args);
}
public static void main(String[] args) throws Exception {
Constructor<Test> constructor = Test.class.getConstructor(String[].class);
new Test(new String[]{});
Object abc = new String[]{};
constructor.newInstance(abc);
}
}