Exception in thread "main"java.lang.IllegalArgumentException: wrong number of arguments
public class demo {
public static void main(String[] args) throws Exception {
Class p = Person.class;
Person person = p.newInstance();
String[] str = {" "," "};
Method method = p.getMethod("list", String[].class);
method.invoke(person,str);
}
}
public class Person {
public void list(String[] str){
System.out.println(Arrays.toString(str));
}
}
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at com. .demo.main(demo.java:19)
Method method=p.getMethod("list",String[].class);メソッドにはString配列のパラメータが1つしかないので、コンパイラは文字列配列を可変長パラメータとしてオブジェクトstrに渡しますが、メソッドにはパラメータが1つしかないので、wrong number of argumentsの異常が発生します.文字列配列を強制的にObjectオブジェクトに変換すれば、この異常を解決することができますp.getMethod("list",String[].class);解決しました.