有效的方法将所有Bean属性复制到另一个Bean中



我正在尝试将所有属性从一个bean复制到另一种bean:

public void copy(MyBean bean){
    setPropertyA(bean.getPropertyA());
    setPropertyB(bean.getPropertyB());
    [..]
}

这很容易出错,如果您有很多属性的豆子,请写很多。

我正在考虑做到这一点,但是我不能将getter从一个对象连接到另一个对象。

public List<Method> getAllGetters(Object object){
    List<Method> result = new ArrayList<>();
    for (final PropertyDescriptor propertyDescriptor : Introspector.getBeanInfo(object.getClass()).getPropertyDescriptors()) {
    result.add(readMethod = propertyDescriptor.getReadMethod());
    }
    return result;
}

编辑

 BeanUtils.copyProperties(this, anotherBean);

正常工作!

考虑使用apache beanutils或春季的豆类。他们都有一个copyProperties()方法,可以做您想要的。

也可以想象,jdk的object.clone()将为您带来所需的结果。请务必查看Javadoc,并因此发布此信息,以便您知道其局限性。

如果您想手动执行此操作,我建议使用所谓的"序列化副本"。一个限制是BEAN最实现可序列化的接口。正如您所说,可以使用反射来完成,但是您可能会带来更多不便。希望这有所帮助。

相关内容

最新更新