将所有属性从Java bean设置为另一个

时间:2012-10-07 10:33:38

标签: java

假设我有一个Java bean,比如Employee,它有一些属性 我想将Employee的所有属性复制到同一Java bean的另一个实例。

一种解决方案是使用getter获取属性并将其设置为另一个实例。但如果POJO中有许多属性,那将是非常耗时的。

有没有更快的方法来实现同样的目标?

3 个答案:

答案 0 :(得分:1)

正如assylias所提到的,复制bean所需的时间非常短。除非你需要每秒几百万次这样做。

重要的一点(我认为)是减少愚蠢的代码量,所以要“复制”一个bean,你可以使它扩展Clonable,JVM将完成其余的工作。你只需要调用bean.clone()。

另一个更灵活的选择是使用Apache BeanUtils,它可以使用反射在对象之间进行复制。

答案 1 :(得分:0)

Object.clone执行浅拷贝,因此您可能最好不要使用自己的拷贝构造函数:

public class Dog {
    public final List<String> names;
    public int age;
    public int weight;

    public Dog() {
        names = new ArrayList<String>();
    }

    protected Dog(Dog original) {
        names = new ArrayList<String>(original.names);
        age = original.age;
        weight = original.weight;
    }

    public Dog copy() {
        return new Dog(this);
    }
}

kudos

答案 2 :(得分:0)

如果您只有几个类来支持克隆,那么覆盖clone()可能是最快的解决方案。否则,如果您需要通用解决方案,请不要重新发明轮子: