Sobes.tech
Junior — Middle
114

Wat is het verschil tussen shallow en deep copy van objecten?

Bedrijven waar gevraagd werd
СБЕРСБЕР

Antwoord van AI

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.