java Method invoke 参数问题

来源:互联网 发布:淘宝会查物流重量吗 编辑:程序博客网 时间:2024/05/29 10:27
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"}});    }}


0 0
原创粉丝点击