在用反射調用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);
這時參數個數就匹配了