Как сделать глубокую копию объекта?
Несколько человек упомянули java об использовании или переопределении jre Object.clone()
. Не делай этого. Object.clone()
имеет class некоторые серьезные проблемы, и j2se его использование в большинстве .java случаев не рекомендуется. Полный j2se ответ см. В пункте 11 из jre "Effective Java" Джошуа Блоха. Я java-api считаю, что вы можете безопасно j2se использовать Object.clone()
в массивах java примитивных типов, но помимо java-api этого вам нужно быть осторожным core-java в правильном использовании core-java и переопределении клона.
Схемы, основанные java-api на сериализации (XML или j2se иначе), беспорядочные.
Здесь jre нет простого ответа. Если java вы хотите глубоко скопировать java-libraries объект, вам придется пройти jre по графу объекта и явно скопировать j2se каждый дочерний объект с javax помощью конструктора копирования java-api объекта или статического classes фабричного метода, который, в openjdk свою очередь, глубоко копирует java дочерний объект. Неизменяемые classes объекты (например, String
s) копировать jre не нужно. Кстати, по этой java причине вам следует отдать class предпочтение неизменности.
java
class
clone
Как сделать глубокую копию объекта?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.