Junior — Middle
97
Was ist der Unterschied zwischen flacher und tiefer Kopie von Objekten?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Поверхностное копирование (shallow copy) создает новый объект, но поля этого объекта ссылаются на те же вложенные объекты, что и у оригинала. То есть копируются только ссылки на вложенные объекты, а не сами вложенные объекты.
Глубокое копирование (deep copy) создает новый объект и рекурсивно копирует все вложенные объекты, таким образом новый объект и его вложенные объекты полностью независимы от оригинала.
Пример:
class Person implements Cloneable {
String name;
Address address;
public Person cloneShallow() throws CloneNotSupportedException {
return (Person) super.clone();
}
public Person cloneDeep() {
Person cloned = new Person();
cloned.name = this.name;
cloned.address = new Address(this.address.street);
return cloned;
}
}
class Address {
String street;
Address(String street) { this.street = street; }
}
При поверхностном копировании address будет общим для оригинала и копии, при глубоком — у каждого объекта будет своя копия address.