整数和int数组的包含所有行为的差异(Java)

Max*_*ace 3 java collections primitive wrapper

有人可能解释为什么以下:

Integer[] arr1 = {1,2,3,4,5};
Collection<?> numbers = Arrays.asList(new Integer[]{1,2,3});
System.out.println(Arrays.asList(arr1).containsAll(numbers));
Run Code Online (Sandbox Code Playgroud)

打印"true",而如果我们像这样交换Integer:

int[] arr2 = {1,2,3,4,5};
Collection<?> numbers2 = Arrays.asList(new int[]{1,2,3});
System.out.println(Arrays.asList(arr2).containsAll(numbers2));
Run Code Online (Sandbox Code Playgroud)

打印"假"?

And*_*mas 9

在第二种情况下,每个列表由单个元素组成.这两个元素都是int []数组.包含较大数组的列表不包含包含较小数组的列表的成员.

Arrays.asList()方法接受类型为T的参数的变量参数列表,并返回一个List<T>.使用整数数组,T可以是Integer,返回类型为List.但是对于原始数组,T不能是int,因为不能有List<int>.