Method中invoke(Object obj,Object...args)第一个参数为类的实例,第二个参数为相应函数中的参数,我想问,我调用的函数本来是一个多参数(参数个数不确定)的函数,应该怎么办?
可以这样调用:method.invoke(object, new Object[][]{new Object[]{obj1, obj2}});
这样相当于object.method(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"}});
}
}