Java反射異常:java.lang.IllegalArgumentException: wrong number of arguments
在用反射呼叫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);
這時引數個數就匹配了