在水木上看到的问题
int[]intArray = new int[]{1, 2, 3, 4};
List<Integer> list = newArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
ListlistFromArray = Arrays.asList(intArray);
System.out.println(listFromArray);
System.out.println(list);
输出结果是
[[I@c17164]
[1, 2, 3, 4]
[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), newInteger(2), new Integer(3), new Integer(4)};
List<Integer> listFromArray2 =Arrays.asList(intArray2);
System.out.println(listFromArray2);
这样就能看到预期结果了
转载自:http://blog.sina.com.cn/s/blog_3e123f03010008qb.html