在水木上看到的问题
int[] intArray = new int[]{1, 2, 3, 4};
List>Integer< list = new ArrayList>Integer<();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
List listFromArray = Arrays.asList(intArray);
System.out.println(listFromArray);
System.out.println(list);
输出结果是
[[I@c17164]
[1, 2, 3, 4]
也就是说Arrays.asList()并没有返回一个{1,2,3,4}的List
原因在于,JDK5中asList接受变长参数表了,把intArray作为单独的参数传递给asList方法的时候,编译器会把它当作一个Object处理,于是返回了只有一个元素的List,而这个元素应该就是指向int[]的引用。
解决方法之一是把intArray声明为Integer[],即
Integer[] intArray = new Integer[]{new Integer(1), new Integer(2), new Integer(3), new Integer(4)};
List>Integer< listFromArray2 = Arrays.asList(intArray2);
System.out.println(listFromArray2);
这样就能看到预期结果了