|
|
|
Копирование полей объекта
|
|||
|---|---|---|---|
|
#18+
Добрый день! Задался вопросом, копирования полей из объекта одного класса в объект другого класса, поля которых одинаковые. Например, есть: class User{ private long id; private name; } class UserView{ private long id; private name; } Хочу: User user = new User(); user.setId(123); user.setName("Петя"); userView = new UserView(); Utils.copy(user, userView); // все поля, которые совпали, скопировались в объект userView. Можно конечно, написать это самому, но мне подсказывает внутренняя интуиция, что уже есть библиотека, которая может это сделать. Подскажите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2015, 09:36 |
|
||
|
Копирование полей объекта
|
|||
|---|---|---|---|
|
#18+
andrej59, Во-первых есть два типа копироавния shallow и deep. Рекомендованый путь это реализовать Clonable и вызывать метод Object.clone, который умеет shallow copy Для deep copy удобно использовать сериализацию. Надо только учесть расход по памяти. Рекурсивного обхода с копированием по полям я не помню. А вот для свойств всяких BeanUtils полно и в Spring и в Apache Commons. Опять же Apache Commons это первое куда нужно смотреть с подобными вопросами. Ещё для свойств JavaBeans рекурсивный обход не сложно через Introspector написать. Работы на несколько минут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2015, 09:58 |
|
||
|
Копирование полей объекта
|
|||
|---|---|---|---|
|
#18+
andrej59 // все поля, которые совпали, скопировались в объект userView. Не обратил внимания на эту фразу. В таких случаях лучше копировать руками, так как для разнородных объектов всегда требуется дополнительная логика. А так, посмотри org.apache.commons.beanutils.BeanUtils.copyProperties() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2015, 10:01 |
|
||
|
Копирование полей объекта
|
|||
|---|---|---|---|
|
#18+
Посмотри nomin ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2015, 10:31 |
|
||
|
Копирование полей объекта
|
|||
|---|---|---|---|
|
#18+
А конкретнее automapping ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2015, 10:35 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2124524]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 484ms |

| 0 / 0 |
