Встречается на собеседованиях • сегодня

Как сделать глубокую копию объекта

В Java для глубокого копирования объекта можно использовать:

  1. Ручное копирование через конструктор или метод:
java
public class Person implements Cloneable {
    private String name;
    private Address address;
    
    @Override
    public Person clone() {
        try {
            Person cloned = (Person) super.clone();
            cloned.address = this.address.clone(); // рекурсивное копирование
            return cloned;
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}
  1. Сериализация/десериализация:
java
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(original);
ObjectInputStream ois = new ObjectInputStream(
    new ByteArrayInputStream(baos.toByteArray()));
Object deepCopy = ois.readObject();
  1. Использование библиотек (Apache Commons, Gson, Jackson):
java
Person copy = new Gson().fromJson(new Gson().toJson(original), Person.class);

Важно: все вложенные объекты тоже должны поддерживать копирование. Для простых структур подойдет сериализация, для сложных - ручное копирование.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы