Ответ 1
Используйте BeanUtils
:
import org.apache.commons.beanutils.BeanUtils;
UserBean newObject = new UserBean();
BeanUtils.copyProperties(newObject, oldObject);
У меня есть два класса java с одинаковыми именами свойств. Как я могу скопировать все свойства в другой bean, заполненный данными. Я не хочу использовать традиционную форму для копирования свойств, потому что у меня много свойств.
Спасибо заранее.
1 класс
@ManagedBean
@SessionScoped
public class UserManagedBean implements Serializable {
private static final long serialVersionUID = 1L;
private String userSessionId;
private String userId;
private String name;
private String adress;
......................
2 класс
public class UserBean {
private String userSessionId;
private String userId;
private String name;
....................
Используйте BeanUtils
:
import org.apache.commons.beanutils.BeanUtils;
UserBean newObject = new UserBean();
BeanUtils.copyProperties(newObject, oldObject);
Если вы используете библиотеку Apache, BeanUtils, вы можете сделать это легко:
http://commons.apache.org/proper/commons-beanutils/
В частности, посмотрите на copyProperties (Object, Object)
http://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanUtils.html#copyProperties(java.lang.Object, java.lang.Object)
Скопировать значения свойств из источника bean в пункт назначения bean для все случаи, когда имена свойств одинаковы.
Ознакомьтесь с Dozer Framework - это объект для структуры отображения объектов. Идея такова:
., поэтому файлы сопоставления максимально компактны. Он полезен для многих случаев, например, для сопоставления прецедента, указывая служебную нагрузку на объекты многоядерной базовой модели.
При доставке учебных курсов SpringSource мы часто указывали на эту структуру.
Используйте java-отражение для установки и получения значений свойств. Существует свойство spring bean, которое делает доступ к значению свойства. Я бы рекомендовал вам java-рефлексию.