使用对象列表调用方法

时间:2014-07-11 19:16:14

标签: java methods invoke

此代码允许我使用tests参数

调用方法
Method m = aClass.getDeclaredMethod(methodName, paramTypes);
Integer n =10;
Object retobj =m.invoke(o, "test",n);
System.out.println(retobj);

现在我想用参数列表调用该方法。

List<Object> arguments =container.getArgs();
Object retobj =m.invoke(o, (Object) arguments);

但是我收到了这个错误

  

java.lang.IllegalArgumentException:参数数量错误

2 个答案:

答案 0 :(得分:1)

invoke method有两个参数:调用方法的对象,以及用于保存参数的“varargs”参数。

这样的参数(也称为“变量arity”)可以与数组互换,并且它被视为这种方法体中的数组。

List<Object>转换为数组,然后将其传入。

Object retobj = m.invoke(o, arguments.toArray());

答案 1 :(得分:0)

在第一个invoke调用中,您传递了2个参数,在第二个invoke中,您只传递了1个。