Каким образом осуществляется создание точной копии объекта в языке Java?
Answer from AI
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().