Sobes.tech
Junior — Middle
86

Объясните, что подразумевается под понятием глубокое клонирование объекта или структуры данных.

AI-дан жауап

sobes.tech AI

Глубокое клонирование (deep cloning) объекта или структуры данных означает создание полной копии объекта вместе со всеми объектами, на которые он ссылается, рекурсивно. В результате получается новый объект, который не разделяет ссылки с оригиналом.

Это отличается от поверхностного клонирования (shallow copy), при котором копируются только сами поля объекта, а вложенные объекты остаются общими (ссылаются на те же экземпляры).

Пример глубокого клонирования в Java с использованием сериализации:

import java.io.*;

public class DeepClone {
    public static <T extends Serializable> T clone(T object) {
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            oos.flush();
            ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
            ObjectInputStream ois = new ObjectInputStream(bais);
            return (T) ois.readObject();
        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

Таким образом, глубокое клонирование полезно, когда нужно создать полностью независимую копию сложной структуры данных, чтобы изменения в копии не влияли на оригинал.