当您将原始数组(
int[]以您的情况为例)传递给时
Arrays.asList,它将创建一个
List<int[]>具有单个元素的数组-
数组本身。因此
contains(3)返回false。
contains(array)将返回true。
如果您使用
Integer[]代替
int[],它将起作用。
Integer[] array = {3, 2, 5, 4};if (Arrays.asList(array).contains(3)){ System.out.println("The array contains 3");}进一步说明:
的签名
asList为
List<T>asList(T...)。基元不能替换泛型类型参数。因此,当您将此方法传递给an时
int[],整个
int[]数组将被替换,
T并得到a
List<int[]>。另一方面,当您将传递
Integer[]给该方法时,
Integer替换将
T获得
List<Integer>。


![Arrays.asList(int [])无法正常工作 Arrays.asList(int [])无法正常工作](http://www.mshxw.com/aiimages/31/507162.png)
