Метод clone()
определен в классе Object
и предназначен для создания копии объекта.
Контракт (согласно документации Object.clone()
):
Cloneable
, вызов clone()
выбросит CloneNotSupportedException
.Object.clone()
выполняет "поверхностное" копирование полей объекта. Для примитивных типов копируются значения, для ссылочных — копируются ссылки на те же самые объекты.clone()
при необходимости.x.clone().getClass() == x.getClass()
.x.clone().equals(x)
может возвращать true
или false
, это зависит от реализации equals()
и логики копирования.Интерфейс Cloneable
: Интерфейс-маркер. Указывает JVM, что класс разрешает клонирование через вызов Object.clone()
. Не имеет методов.
Поверхностное vs Глубокое копирование:
Пример реализации глубокого копирования:
java
Метод clone()
определен в классе Object
и предназначен для создания копии объекта.
Контракт (согласно документации Object.clone()
):
Cloneable
, вызов clone()
выбросит CloneNotSupportedException
.Object.clone()
выполняет "поверхностное" копирование полей объекта. Для примитивных типов копируются значения, для ссылочных — копируются ссылки на те же самые объекты.clone()
при необходимости.x.clone().getClass() == x.getClass()
.x.clone().equals(x)
может возвращать true
или false
, это зависит от реализации equals()
и логики копирования.Интерфейс Cloneable
: Интерфейс-маркер. Указывает JVM, что класс разрешает клонирование через вызов Object.clone()
. Не имеет методов.
Поверхностное vs Глубокое копирование:
Пример реализации глубокого копирования:
java
Register or sign in to get access to full answers for all questions from the question bank.