list.clear() 代码行注释说明
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<2000;i++){
list.add(2);
list.add(2);
list.add(2);
}
List<List<Integer>> listList = new ArrayList<>();
List<Integer> listtwo = new ArrayList<>();
for(int i=0;i<list.size();i++){
listtwo.add(list.get(i));
}
listList.add(listtwo);
listtwo.clear(); //执行该方法后 listList 也会变空?疑问处
for(List<Integer> item:listList) {
for(Integer temp:item) {
System.out.println(temp);
}
}
结帖:
再看某些源码中发现该例子场景,代码说明由于listList 存入的T 型是个引用类型,故在listtwo.clear()后该list清空,即所有申明指向listtwo 的引用由于地址一致,所以listList 中元素也为空!例如可用例用引用在一个void 返回值方法中对引用类型最一些操作。 以上供参考。如有不一致,请回复指正。