JAVA-如何将一个对象的属性复制到另一个具有相同属性的对象?

Hyu*_*won 6 java copy object

假设我们有一个如下定义的对象A:

public class ObjectA {
    private Attribute a1;
    private Attribute a2;
    private Attribute a3;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我需要创建仅包含对象A的前两个属性的第二个对象B:

public class ObjectB {
    private Attribute a1;
    private Attribute a2;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:将对象A复制到对象B的最佳方法是什么?我一直在一个接一个地复制getter和setter的属性,但是有些事情告诉我,必须有更好的方法来做到这一点!尤其是当对象具有很多属性时,我必须编写一行代码,仅将它们全部复制到第二个对象B中。

非常感谢 :)

编辑:我一直被“另一个问题的可能重复”警告:我如何在Java中复制对象?

我的问题在某种程度上略有不同,即我正在处理2个具有相同属性但不完全相同的对象!

Tho*_*mas 6

扩展我的评论:

使用推土机,它可以像以下操作一样简单:

Mapper mapper = new DozerBeanMapper();
ObjectA source = new ObjectA();
ObjectB target = mapper.map(source , ObjectB.class);
Run Code Online (Sandbox Code Playgroud)

或者,如果您的目标类没有no-arg构造函数:

ObjectA source = new ObjectA();
ObjectB target = new ObjectB(/*args*/);
mapper.map(source, target );
Run Code Online (Sandbox Code Playgroud)

从文档(我强调):

执行Dozer映射后,结果将是目标对象的新实例,该实例包含具有与源对象相同的字段名称的所有字段的值。如果任何映射的属性具有不同的数据类型,则Dozer映射引擎将自动执行数据类型转换。