此代码允许我使用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:参数数量错误
答案 0 :(得分:1)
invoke
method有两个参数:调用方法的对象,以及用于保存参数的“varargs”参数。
这样的参数(也称为“变量arity”)可以与数组互换,并且它被视为这种方法体中的数组。
将List<Object>
转换为数组,然后将其传入。
Object retobj = m.invoke(o, arguments.toArray());
答案 1 :(得分:0)
在第一个invoke
调用中,您传递了2个参数,在第二个invoke
中,您只传递了1个。