Java-самоанализ / рефлексия - PullRequest
1 голос
/ 06 июня 2011

Я пишу общий метод, который копирует два разных типа бинов, которые имеют общие поля. Я использую самоанализ для получения методов записи и чтения, например

propertyDescriptor1.getWriteMethod().invoke(bean1, propertyDescriptor2.getReadMethod().invoke(bean2) )

Вышеприведенное прекрасно работает для строк, но не для любых примитивных типов, таких как int, long .... Какие-нибудь изящные решения для копирования двух разных типов бобов?

Редактировать: Решено, проблема была не в примитивных типах, я не проверял, не было ли свойство propertyDescriptor.getName () не "классом"

Ответы [ 3 ]

4 голосов
/ 06 июня 2011

Почему бы не использовать Apache Commons BeanUtils .

У него есть очень полезный метод, называемый copyProperties, который копирует свойства из одного компонента в другой, если они имеют одно и то же имя.

0 голосов
/ 06 июня 2011

Dozer - это мощный картограф, который может справиться с вложенными бобами, коллекциями и всем остальным, с чем вы столкнетесь, если раскроете свой собственный ... возможно, стоит проверить, если бобысложны.

0 голосов
/ 06 июня 2011

Вы можете написать функцию, которая преобразует строку, а функция преобразует строку в любой тип. Используя комбинацию этих двух, вы можете преобразовать практически любой скалярный тип в любой другой.

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

Насколько гибким вам должно быть преобразование?

...