假设我有一个Java bean,比如Employee,有一些属性。
我想将 Employee 的所有属性复制到同一个 Java bean 的另一个实例中。
一种解决方案是使用 getter 获取属性并将其设置为另一个实例。但是如果 POJO 中有很多属性,那将很耗时。
有没有更快的方法来实现同样的目标?
假设我有一个Java bean,比如Employee,有一些属性。
我想将 Employee 的所有属性复制到同一个 Java bean 的另一个实例中。
一种解决方案是使用 getter 获取属性并将其设置为另一个实例。但是如果 POJO 中有很多属性,那将很耗时。
有没有更快的方法来实现同样的目标?
正如 assylias 所提到的,复制 bean 所需的时间非常短。除非您需要每秒执行几百万次。
重要的一点(我认为)是减少愚蠢代码的数量,因此要“复制”一个 bean,您可以使其扩展Clonable,其余的由 JVM 完成。你只需要调用 bean.clone()。
另一个更灵活的选择是使用Apache BeanUtils,它可以使用反射在对象之间复制。
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);
}
}