У меня есть список объектов компании. Я пытаюсь клонировать этот список:Сделайте глубокую копию с клоном
public static List<Company> cloneList(List<Company> list) {
List<Company> clone = new ArrayList<Company>(list.size());
for(Company item: list) clone.add(item.clone());
return clone;
}
Однако мой компилятор говорит:
Multiple markers at this line
- The method add(Company) in the type List<Company> is not applicable for the arguments
(Object)
Почему это не возможно сделать глубокую копию с clone()
?
Thx для вашего ответа! Однако мой компилятор теперь возвращает мне: 'Метод clone() из типа Object не отображается' – user2051347
Thx для вашего ответа! Что бы вы поместили в '/ * do clone * /'? – user2051347
Код, который создает копию объекта с использованием super.clone, а затем заменяет все ссылки на изменяемое состояние, которое может не использоваться совместно с копией этого состояния. Это также относится к состоянию, которое транзитивно достижимо. Внедрение клона может быстро усложниться. Я бы посоветовал вам не использовать clone(). Вместо этого используйте конструктор копирования или фабрику копирования. – Pyranja