2

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

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

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

4

3 回答 3

1

正如 assylias 所提到的,复制 bean 所需的时间非常短。除非您需要每秒执行几百万次。

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

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

于 2012-10-07T10:38:56.843 回答
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);
    }
}

荣誉

于 2012-10-07T10:40:16.420 回答
0

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

于 2012-10-07T10:56:39.023 回答