Back to questions
Junior — Middle
55
Объясните, что подразумевается под понятием глубокое клонирование объекта или структуры данных.
Answer from 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);
}
}
}
Таким образом, глубокое клонирование полезно, когда нужно создать полностью независимую копию сложной структуры данных, чтобы изменения в копии не влияли на оригинал.