ArrayList.clear () также удаляет все содержащиеся объекты? - PullRequest
6 голосов
/ 15 апреля 2011

Предполагая, что у меня ArrayList из ArrayLists, созданный таким образом:

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

Если я позвоню:

 listOfListsOfStrings.clear();

Будет ли попытка позднее получить доступ к любой из строк внутри listOfListsOfStrings всегда приводит к java.lang.NullPointerException ?

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

Нет, только ссылки будут очищены. Если ссылка на объект больше не существует, он может быть собран мусором, но вы не получите NPE, поскольку у вас все равно не будет возможности получить новую ссылку на этот объект.

1 голос
/ 15 апреля 2011

Нет, он не будет удалять объекты в ArrayList, если у вас все еще есть внешние ссылки на них. ArrayList.clear () ничего не делает с объектами, на которые ссылаются, если они не осиротели, и в этом случае вы не будете ссылаться на них позже.

...