Junior — Middle
95
Obyektlarning sathiy va chuqur nusxasi qanday farq qiladi?
Qaerda so'ralgan kompaniyalar
AIdan javob
sobes.tech AI
Поверхностное копирование (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.