Sobes.tech
Назад к вопросам
Junior — Middle
64

Каким образом осуществляется создание точной копии объекта в языке Java?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

В Java создание точной копии объекта обычно осуществляется с помощью метода clone(), который определён в классе Object. Чтобы объект можно было клонировать, класс должен реализовать интерфейс Cloneable и переопределить метод clone(). При этом clone() создает поверхностную копию (shallow copy), то есть копирует поля объекта, но если поля — ссылки на другие объекты, то копируются ссылки, а не сами объекты.

Если нужна глубокая копия (deep copy), то нужно самостоятельно реализовать копирование вложенных объектов внутри метода clone() или использовать другие подходы, например, сериализацию.

Пример поверхностного клонирования:

class Person implements Cloneable {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

// Использование:
Person p1 = new Person("Иван", 30);
Person p2 = (Person) p1.clone();

Если класс содержит изменяемые поля-объекты, для глубокого копирования нужно вручную клонировать эти поля внутри clone().