- private <T> void vary1(T... nums){
 
 -         
 
 -     }
 
  
-     public void testVary1() {
 
 -             int[] arr={2,3};
 
 -             vary1(arr,1);//可以通过编译
 
 -     }
 
 -     
 
 -     private void vary2(Object... nums){   //改为Object就可以通过编译
 
 -             
 
 -     }
 
  
-     public void testVary2() {
 
 -             int[] arr={2,3};
 
 -             vary2(arr,1);//不可以通过编译,提示:The method vary2(int...) in the type VariousPara 
 
 -                                      //is not applicable for the arguments (int[], int)
 
 -     }
 
 
  复制代码 
先解答为什么改为Object就可以通过编译,因为int[]与int都可以转化为他们的父类Object类型,所以只要是他们的子类作为参数就可以 
 
而你的参数int[]的类型在JVM中表示为"[I",即就是int类型的数组,而另一个参数为int类型,他们的父集是Object类型,而vary2函数定义需要的类型是int类型,不能将Object类型转化为int类型,所以编译器报错。 |