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

将所有属性从JavaBean设置为另一个,java,Java,假设我有一个Java bean,比如Employee,带有一些属性。 我想将Employee的所有属性复制到同一JavaBean的另一个实例 一种解决方案是使用getter获取属性并将其设置为另一个实例。但是,如果POJO中有许多属性,那么这将非常耗时 有没有更快的方法达到同样的效果?正如Assylas提到的,复制bean所需的时间非常少。除非你需要每秒做几百万次 重要的一点(我认为)是减少愚蠢代码的数量,因此要“复制”一个bean,您可以让它扩展,而JVM将完成其余的工作。您只需要调用bean

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

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


有没有更快的方法达到同样的效果?

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

重要的一点(我认为)是减少愚蠢代码的数量,因此要“复制”一个bean,您可以让它扩展,而JVM将完成其余的工作。您只需要调用bean.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);
    }
}
公共级狗{
公开最终名单名称;
公共信息;
公共权重;
公犬(){
名称=新的ArrayList();
}
受保护的狗(原狗){
名称=新的ArrayList(原始.names);
年龄=原始年龄;
重量=原始重量;
}
公众狗只复制品(){
归还新狗(本);
}
}

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


“但是如果POJO中有许多属性,那么这将非常耗时。”=>您是否尝试过测量它需要多长时间?我所说的耗时是指编写代码所需的开发时间。请看一下该项目。那里有很多公用设施。我经常使用lang、IO、logging、CLI、beanutils和exec模块。