想用invoke函数调用一个参数不固定的函数,
比如函数原型为
void printNum(int ...nums)
{
for(int i = 0; i < nums.lenght; i++)
{
System.out.println(nums[i]);
}
}反射调用时使用如下代码
Method[] method = c.getDeclaredMethods();
method[0].invoke(this, 5,4);报错:
wrong number of arguments
请问这个问题怎么解决?多谢!
比如函数原型为
void printNum(int ...nums)
{
for(int i = 0; i < nums.lenght; i++)
{
System.out.println(nums[i]);
}
}反射调用时使用如下代码
Method[] method = c.getDeclaredMethods();
method[0].invoke(this, 5,4);报错:
wrong number of arguments
请问这个问题怎么解决?多谢!
int[] i={5,4};
method[0].invoke(this, i);
这个会返回所有的方法。(包括父类的方法,使用时要注意)你这样写会抛异常。
最好的方法:Method m=c.getDeclaredMethod("printNum",int[].class);
int a[] = {1,2,3,4,5}
method[0].invoke(this,a);
本人一向用C,java不行,以后还得经常来学习.