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

Какие знаешь способы клонирования объекта в Java

В Java есть несколько способов клонирования объектов:

  1. Реализация интерфейса Cloneable и переопределение метода clone()

    java
    class MyClass implements Cloneable {
        @Override
        protected Object clone() throws CloneNotSupportedException {
            return super.clone(); // поверхностное копирование
        }
    }
  2. Использование конструктора копирования

    java
    class MyClass {
        private int value;
        
        public MyClass(MyClass other) {
            this.value = other.value; // глубокое копирование
        }
    }
  1. Сериализация/десериализация (для глубокого копирования)

    java
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ObjectOutputStream oos = new ObjectOutputStream(baos);
    oos.writeObject(original);
    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
    ObjectInputStream ois = new ObjectInputStream(bais);
    MyClass copy = (MyClass) ois.readObject();
  2. Библиотеки (Apache Commons, Gson и др.)

    java
    MyClass copy = SerializationUtils.clone(original); // Apache Commons
  3. Копирование через JSON (например, Gson)

    java
    Gson gson = new Gson();
    MyClass copy = gson.fromJson(gson.toJson(original), MyClass.class);

Важно: метод clone() по умолчанию делает поверхностное копирование. Для глубокого копирования нужно реализовывать его вручную.

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

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

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

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