【问题标题】:How to call any methods having any number of parameter and any datatype in Java如何在 Java 中调用具有任意数量参数和任意数据类型的任何方法
【发布时间】:2016-05-13 20:45:36
【问题描述】:

我想创建一种方法,该方法可以使用具有任意数量参数和任何数据类型的任何方法。

例如。我想动态调用以下所有方法 无效方法1(int x,int y) 无效方法2(int x,字符串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?

在调用方法时,我收到错误“参数数量不正确”

【问题讨论】:

标签: java generics reflection parameters invoke


【解决方案1】:

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

【讨论】:

  • 传递obj 仅在该方法仅采用Object[] 类型的一个参数时才有效。
  • @Thomas - 它有效,只是验证了它......invoke 有两个参数 - 主题和参数数组。如果你想将一个数组作为参数传递,你需要创建一个包含一个元素的数组 - 一个数组......就像这样:MyClass.class.getMethod("a", Object[].class).invoke(subject, new Object[] { obj });
猜你喜欢
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多