想用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
请问这个问题怎么解决?多谢!

解决方案 »

  1.   

    Method[] method = c.getDeclaredMethods(); 
    int[] i={5,4};
    method[0].invoke(this, i); 
      

  2.   

    c.getDeclaredMethods(); 
    这个会返回所有的方法。(包括父类的方法,使用时要注意)你这样写会抛异常。
    最好的方法:Method m=c.getDeclaredMethod("printNum",int[].class);
      

  3.   

    呵呵,楼上说的不错,要确定你调用的方法就是printNum
      

  4.   

    你给不固定参数传数组就可以了
    int a[] = {1,2,3,4,5}
    method[0].invoke(this,a); 
      

  5.   

    问题解决了,谢谢各位好心人,
    本人一向用C,java不行,以后还得经常来学习.