假设我们有一个如下定义的对象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个具有相同属性但不完全相同的对象!
扩展我的评论:
使用推土机,它可以像以下操作一样简单:
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映射引擎将自动执行数据类型转换。
| 归档时间: |
|
| 查看次数: |
7893 次 |
| 最近记录: |