对象的深层复制
我需要将一个对象复制到另一个具有相同字段名称的对象。这可以通过BeanUtils实现,但我正在寻找深层复制。对象包含另一个对象的List,并且这些“子对象”也是类似的。我可以通过部分使用BeanUtils和手动复制来实现这一目的。
public class MindBO implements Serializable {
private String mid;
private String name;
private List<TagBO> tags;
/* Getters and Setters */
}
public class MindEO implements Serializable {
private String mid;
private String name;
private List<TagEO> tags;
/* Getters and Setters */
}
public static MindEO copy(MindBO mBO) {
MindEO mEO = new MindEO();
try {
BeanUtilsBean bub = BeanUtilsBean.getInstance();
Map<?,?> props = bub.describe(mBO);
// Remove non-trivial List field
props.remove("tags");
// Copy other fields
bub.populate(mEO, props);
// Copy List manually
if(mBO.getTags() != null) {
List<TagEO> mEOTags = new ArrayList<TagEO>();
for(TagBO tBO : mBO.getTags()) {
mEOTags.add(map(tBO));
}
mEO.setTags(mEOTags);
}
} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
e.printStackTrace();
}
return mEO;
}
然而,这种方法繁琐,容易出错,不可扩展。有更好的方法吗?