Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Копирование объекта


Автор: User008 17.4.2012, 09:19
Как копировать объект? В интернете на эту тему постоянно нахожу про наследование от класса clonable или что-то в этом роде. Но это мне не подходит. Объект произвольного типа.

Автор: Stolzen 17.4.2012, 09:31
Варианты:

Код
BeanUtils.cloneBean(this) 

пакет commons-beanutils

Код
SerializationUtils.clone(this)

commons-lang, класс должен быть implements Serializable

Так же можно преобразовать в xml/json и затем обратно.

Автор: AxNe0 18.4.2012, 12:40
User008, для копирования объектов можно применить клонирование. Клонирование, в свою очередь, бывает двух видов "глубокое" (deep clone) и "неглубокое" (shallow clone). Разница между ними в том, что shallow clone по сути клонирует только примитивы, поля объекта остаются прежними, а deep clone полностью клонирует структуру объекта. 

Сперва надо определиться, какой тип клонирования нужен, а потом можно воспользоваться неплохой и довольно гибкой библиотекой http://code.google.com/p/cloning/, помимо глубокого клонирования она позволяет выполнять неглубокое, а также добавлять исключения, в случае, если требуется не клонировать экземпляры определенных классов. И да, при этом классам вовсе необязательно реализовывать какой-либо интерфейс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)