Я изучил Java, передавая ссылку на объект по значению, и для создания локальной копии объекта я могу либо сделать clone(), либо copy-constructor. Я также посмотрел на глубокую/мелкую копию, а также на несколько сообщений в stackoverflow.Как сделать копию объекта ArrayList, который является типом списка?
Теперь я смотрю на пример:
List<String> list = new ArrayList<String>();
String one = "one"
list.add(one);
Несколько статей я читал только упоминает, что ArrayList реализует клонируемыми, но на самом деле не сказать, как сделать локальную копию «списка», если тип списка не ArrayList, который не выполняет клонирование.
Я могу вызвать clone(), если «list» - это тип ArrayList.
ArrayList<String> list = new ArrayList<String();
list.clone();
Но если тип - это список, я не могу.
Должен ли я использовать конструктор копирования, как показано ниже, чтобы сделать локальную копию? Каков наилучший способ сделать копию «списка»?
List<String> tmpList = new ArrayList<String>(list);
Я не понимаю. Каковы все «проблемы, связанные с клонированием», и почему они настолько плохи, что вы никогда не должны их игнорировать? –
@ RussellSilva, http://jtechies.blogspot.hu/2012/07/item-11-override-clone-judiciously.html –