在用反射调用Hello.java的main方法时报了一个异常
java.lang.IllegalArgumentException: wrong number of arguments
Hello.java
package classloader;
public class Hello{
public static void main(String args[]){
for(String arg:args){
System.out.println("运行Hello的参数:"+arg);
}
}
}
上网搜索一番后了解了原因
取main方法时用的是:
Method main=getMethod("main",String[].class);
调用时用的是:
main.invoke(null,argsArray);
这时取出的main方法的参数是一个Object对象
在用invoke方法调用main时传的参数argsArray是一个字符串数组对象
参数个数不匹配,因此会报异常wrong number of arguements
正确的调用方法是先将String数组强制转换成Object,然后传参数
main.invoke(null,(Object)argsArray);
这时参数个数就匹配了