2012-03-09 3 views
4

Так я думал о создании списка объектов, как этотСоздание списка объектов в Java

ArrayList<Obj> lst = new ArrayList<Obj>(10); 
for (int i = 0; i < 10; i++) { 
    Obj elem = new Obj(); 
    lst.add(elem); 
} 

Законно ли это или я должен беспокоиться об объекте 1 получение громил, когда ссылка элем начинает указывать на Объект 2? Если это незаконно, как я могу это сделать иначе? Есть ли способ автоматически генерировать десять различных имен ссылок?

+0

Нет, вам нужно только беспокоиться о том, что объект 1 получает trashed, когда нет ссылок на lst структуру. Ссылка elem является «свежей» каждый раз. – Adam

+1

Ваши две строки внутри цикла также могут быть записаны как 'lst.add (новый Obj());' –

ответ

5

Сборщик мусора удалит объекты, только если на нем нет ссылок. В вашем случае ваш список будет указывать на 10 различных Объектов объектов, и они безопасны, пока вы не потеряли ссылку на lst Объект.

3

Это совершенно законно. Ваш ArrayList будет содержать ссылку на объект, который вы только что создали, поэтому он не будет GCed.

1

Ваш подход абсолютно применим. Вы получите список из десяти различных объектов.

Смежные вопросы