参数 为什么还有...号,源代码里的方法也有,这是什么语法
invoke(throwable, new Object[] { cause });这样调用,第二个参数 是个数组对象,如果一个方法有多个参数 ,数组里的参数类型怎么与方法参数匹配,从数组 里第0个到第n个,匹配方法的从左到右的顺序吗

解决方案 »

  1.   

    查了下,这种写法在内部实现时是把args当作一个数组用
    参考
    http://blog.csdn.net/wfy1987/archive/2009/03/16/3993468.aspx
      

  2.   

    可变参数你的问题好像没什么意义吧,不存在数组跟方法参数的匹配问题
    method(T...t)
    method(T[]t)
    这两个等价的,直接在方法体里使用即可,lz的匹配又指的是什么呢?
      

  3.   


    public static void m2(String... str){
    //String...代表传参数的时候可以传任意个String类型的参数,str是相应类型的数组
    for(int i=0;i<str.length;i++){
    System.out.println(str[i]);
    }
    }可变长参数类型可以兼容数组参数类型,但是数组参数类型不能兼容可变长参数类型。
    但是主方法中public static void main(String[] args)中传给主方法的是单个字符串,这是因为java虚拟机自动把主方法中的参数包装成了数组。
    一个方法最多只能有一个可变长参数,而且该可变长参数还必须是该方法的最后一个参数。
      

  4.   

    我说的匹配 update(Long userId,String name )//这个方法要的参数类型是long ,String 而用invoke(User, new Object[] { new Long(3),new String("test")}); //这里的object数组 是不是必须要按long 型,String这样建数组
     
      

  5.   

    invoke(user, 3L, "test"); 就可以了。
      

  6.   

    Method api里没有看到这个方法,只看到 invoke(throwable, new Object[] { cause });
    这个方法在哪呢
      

  7.   

    8楼只是具体举一个例子而已
    Method.invoke(Object obj,Object...args) Method是你要执行的方法,obj是执行这个方法的对象(或者说是方法所在的类的实例),args是方法参数,...表示参数个数是可变的,可以是0个,也可以是多个
    如果看了反射,这个就会知道的