Копирование полей объекта.

 
 
 
Сообщения:10
Добрый день!

Задался вопросом, копирования полей из объекта одного класса в объект другого класса, поля которых одинаковые.

Например, есть:
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.

Можно конечно, написать это самому, но мне подсказывает внутренняя интуиция, что уже есть библиотека, которая может это сделать.

Подскажите пожалуйста.
 
 
Сообщения:309
Вот вроде библиотечка для вашего случая - http://dozer.sourceforge.net/
Сам не пробовал, так что посмотрите сами. А вообще, я стараюсь избегать подобной магии - в большом проекте с ума сойдешь разбираться что откуда взялось.
 
 
Сообщения:10
Cobalt.R:
А вообще, я стараюсь избегать подобной магии - в большом проекте с ума сойдешь разбираться что откуда взялось.


советуете всё же написать самому?
 
 
Сообщения:455
andrej738:
Задался вопросом, копирования полей из объекта одного класса в объект другого класса, поля которых одинаковые.

Отличный вопрос :)
Только я на 100% уверен, что это не тот вопрос на который вы ищите ответ.
Я бы посоветовал сформулировать задачу для которой Вы хотите применить это копирование.

Могу предположить, что Вы хотите облегчить себе жизнь при создании DTO, что бы не писать много раз destination.setField = source.getField?
Изменен:24 дек 2015 09:59
 
 
Сообщения:10
izon:
Могу предположить, что Вы хотите облегчить себе жизнь при создании DTO


izon, вы угадали :-) Пишу фасадные классы, вот столкнулся, что много приходится estination.setField = source.getField.

Может есть другие способы от этого уйти?
 
 
Сообщения:455
Не знаю, как по мне, так ничего страшного в том, чтобы один раз это написать ручками, тем более автодополнение в современных IDE очень сильно облегчают это процесс.
Однако, на мой взгляд, если "облегчить" сейчас себе эту работу предложенным Вами способом, то потом могут быть грабли.
Например через годик при рефакторинге Вы, или кто то другой переименует поле, при компиляции ничего не сломается, но поле в DTO, которое раньше нормально заполнялось вдруг окажется не инициализированным. Вот и ищи потом почему так.
Но это все ИМХО.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет