如何在Java中调用任何具有任意数量的参数和任何数据类型的方法

时间:2016-02-04 09:50:39

标签: java generics reflection parameters invoke

我想创建一个方法,任何方法都可以包含任意数量的参数和任何数据类型。

例如。我想动态地调用所有方法 void method1(int x,int y) void method2(int x,String y) void method3(Float x,Long y,String z)

我正在使用反射这样做。现在我坚持认为在调用这个动态方法时如何将参数传递给这些方法。 我做了多远....

    MyClass myClass = new MyClass();
    Class<?> c = myclass.getClass();
    Method[] m = c.getMethods();
    int i = 0;
    Object [] obj;   // obj contains values to be passed
    for(Method method : m)
    {
        if("methodX".equals(method.getName()))
        {
            break;
        }
        i++;
    }
    Method myMethod = m[i];
    myMethod.invoke(myClass, obj); //this is not working

如何调用myMethod?

在调用方法时,我收到错误&#34;参数数量不正确&#34;

1 个答案:

答案 0 :(得分:0)

尝试myMethod.invoke(subject, obj)subject是您要调用方法的实例。