【发布时间】: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?
在调用方法时,我收到错误“参数数量不正确”
【问题讨论】:
-
检查方法名和参数类型。 Apache Commons Lang 有一些实用程序类可以帮助解决这个问题。尽管如此,IMO 的主要问题是:你想用这个实现什么?
标签: java generics reflection parameters invoke