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);
}
}
}
Таким образом, глубокое клонирование полезно, когда нужно создать полностью независимую копию сложной структуры данных, чтобы изменения в копии не влияли на оригинал.