将所有bean属性复制到另一个bean

时间:2016-12-04 13:26:51

标签: java javabeans

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

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

如果您有一个具有大量属性的bean,这很容易出错并且需要编写很多内容。

我正在考虑反思这样做,但我不能将吸气剂从一个物体“连接”到另一个物体的设定者。

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);

按预期工作!

2 个答案:

答案 0 :(得分:5)

考虑使用Apache BeanUtilsSpring's BeanUtils。他们都有一个copyProperties()方法,可以做你想做的事。

同样可以想象JDK's Object.clone()将为您提供所需的结果。请务必查看Javadoc和this SO post,以便了解其局限性。

答案 1 :(得分:-1)

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