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);解決しました.