我尝试了以下代码:
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[]作为参数实例化一个构造函数。
谢谢。
发布于 2014-11-04 19:55:34
这样如何:
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
发布于 2014-11-04 20:01:22
使用新的String[]直接调用newInstance会使它感到困惑,因为它不确定新的String[]是一个参数,还是表示变量的另一种方式。通过将其分配给下面的对象" abc“,它明确地告诉编译器abc(表示字符串数组)是一个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);
}
}https://stackoverflow.com/questions/26734456
复制相似问题