Назад к вопросам
Junior — Middle
64
Чем отличается процесс полного дублирования объекта от его поверхностного копирования?
Ответ от нейросети
sobes.tech AI
Полное дублирование объекта (deep copy) и поверхностное копирование (shallow copy) отличаются уровнем копирования вложенных объектов:
-
Поверхностное копирование создает новый объект, но поля, которые являются ссылками на другие объекты, копируются как ссылки. То есть вложенные объекты не дублируются, а разделяются между оригиналом и копией.
-
Полное дублирование создает новый объект и рекурсивно копирует все вложенные объекты, создавая полностью независимую копию.
Пример на Java:
import java.util.ArrayList;
import java.util.List;
class Person implements Cloneable {
String name;
List<String> hobbies;
public Person(String name, List<String> hobbies) {
this.name = name;
this.hobbies = hobbies;
}
// Поверхностное копирование
public Person shallowCopy() throws CloneNotSupportedException {
return (Person) this.clone();
}
// Полное дублирование
public Person deepCopy() {
List<String> hobbiesCopy = new ArrayList<>(this.hobbies);
return new Person(this.name, hobbiesCopy);
}
}
В этом примере при поверхностном копировании список hobbies будет общим для оригинала и копии, а при глубоком — создастся новый список.