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);

這時參數個數就匹配了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章