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

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

В 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
    // Apache Commons
    MyClass copy = SerializationUtils.clone(original);

Важно:

  • Cloneable требует осторожности — по умолчанию clone() делает поверхностное копирование.
  • Для глубокого копирования нужно вручную клонировать вложенные объекты.
  • Сериализация работает только с Serializable-объектами.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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