ArrayList.clear()是否也删除所有包含的对象?

时间:2011-04-14 20:25:02

标签: java garbage-collection arraylist

假设我有一个以这种方式创建的ArrayLists的ArrayList:

  ArrayList< ArrayList<String> > listOfListsOfStrings = 
                              new ArrayList< ArrayList<String> >();

如果我打电话:

 listOfListsOfStrings.clear();

稍后访问 listOfListsOfStrings 中的任何字符串的尝试是否会导致 java.lang.NullPointerException

2 个答案:

答案 0 :(得分:3)

不,只会清除引用。如果不再存在对某个对象的引用,那么它可能会被垃圾收集,但是你没有得到NPE,因为无论如何你都无法获得对该对象的新引用。

答案 1 :(得分:1)

不,如果您仍然有对它们的外部引用,它将不会删除ArrayList中的对象。 ArrayList.clear()对被引用的对象不做任何处理,除非它们是孤立的,在这种情况下你以后不会引用它们。