Ниже приведен кодКак ссылку на объект и клонирование работает в Java
ArrayList arList = someMethod();// returning ArrayList with customDO objects
Сейчас где-то в другом классе я получаю данные из этого arList
CustomDo custDO= (CustomDO)arList.get(0);
Будет arList в живых до тех пор, пока custDO жив? Если да, то будет ниже кусок коды помощи
CustomDO custDO = ((CustomDO)arList.get(0)).cloneMe();
// where cloneMe has defintion as return ((CustomDO)super.clone());
// CustomDo implements Cloneable
Есть ли лучший способ сохранить копию только первый элемент arList и выбросьте список, так что он может быть собран сборщиком мусором?
Я собираюсь удалить список из памяти и сохранить только первый элит. Как это можно достичь? –
Нет проблем, просто делайте то, что вы делаете сейчас. Ваша ссылка custDo останется в силе, даже после того, как список будет удален. – Thilo
Это не будет сбор мусора, пока нет ссылок на список. Установите любую ссылку на свой список на нуль или позвольте им исчезнуть, возвращаясь из метода, где объявлена ссылка. Когда больше нет ссылок на список, тогда будет бесплатно собираться мусор. Ваш первый элемент останется в живых, потому что я предполагаю, что вы будете ссылаться на него. – rayd09