wrong number of arguments,java方法反射時數組參數的坑

java方法中只有一個參數是數組,反射的時候咱們不能想固然的傳歌數組進去,傳數組進去的時候表示多個參數。
兩個數組不是一個意思啊。
咱們應該把數組轉爲objet,這樣才表示一個參數。

import java.lang.reflect.Method;

public class MethodTest {
	public void a(String[] args) {
		System.out.println("a");
	}

	public static void main(String[] args) throws Exception {
		MethodTest obj = new MethodTest();
		Method m = obj.getClass().getMethod("a", String[].class);

		m.invoke(obj, new String[1]);  // new String[1] 實際上是null,是一個object
		m.invoke(obj, (Object) new String[] {}); // 這裏強制轉成了object,因此也是object
		m.invoke(obj, new String[] {}); // 報錯,這裏是個數組,是個object數組,a方法只有一個參數,因此報錯

	}
}



結果是
a
a
Exception in thread "main"
java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
相關文章
相關標籤/搜索