- 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类型,所以编译器报错。 |