假设我有一个Java bean,比如Employee,它有一些属性 我想将Employee的所有属性复制到同一Java bean的另一个实例。
一种解决方案是使用getter获取属性并将其设置为另一个实例。但如果POJO中有许多属性,那将是非常耗时的。
有没有更快的方法来实现同样的目标?
答案 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);
}
}
答案 2 :(得分:0)
如果您只有几个类来支持克隆,那么覆盖clone()可能是最快的解决方案。否则,如果您需要通用解决方案,请不要重新发明轮子: