Method中invoke(Object obj,Object...args)第一個參數為類的執行個體,第二個參數為相應函數中的參數,我想問,我調用的函數本來是一個多參數(參數個數不確定)的函數,應該怎麼辦。
可以這樣調用:method.invoke(object, new Object[][]{new Object[]{obj1, obj2}});
這樣相當於object.method(obj1, obj2);
請看下面的例子:
import java.lang.reflect.Array;import java.lang.reflect.Method;public class Test{ public void print(String string) { System.out.println("print(String string)"); System.out.println(string); } public void print(String ... strings) { System.out.println("print(String ... string)"); for(String string: strings) System.out.println(string); } public static void main(String[] args) throws Exception { Test test = new Test(); // 調用 print(String string) Method method1 = test.getClass().getMethod("print", String.class); method1.invoke(test, "a"); // 調用 print(String ... strings) Method method2 = test.getClass().getMethod("print", Array.newInstance(String.class, 0).getClass()); method2.invoke(test, new String[][]{new String[]{"a", "b"}}); }}