在水木上看到的问题
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);
这样就能看到预期结果了

posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Java notes - 关于ArrayList.asList()方法

Posted on 2007-04-22 20:26 ZelluX 阅读(849) 评论(0)  编辑  收藏 所属分类: OOP
2007-04-20 11:48:48
只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问