第一种推荐的copy是个第三方工具类
org.springframework.beans;中
类BeanUtils
方法--》
public static void copyProperties(Object source, Object target) throws BeansException {
copyProperties(source, target, null, (String[]) null);
}
source是原对象,target是要复制的对象。
这种copy是浅copy,加入source和target中都还包含同一个子对象,那么如果用这个copy的话,target中的子对象就和source中的子对象的内存地址一样,很容易影响数据混乱,假如copy后修改一个target对象中的子对象的数据,那么source对象的的子对象数据也会变化,。估计我说的有点混乱,,但我有个建议就是这个BeanUtils.copyProperties(Object source, Object target)函数只适合单层的对象间copy,不适合还有子对象的copy。
第二种就是用流来处理,现将对象转换成流,然后将流转换成对象,这样就是深copy了,完全复制成另外一个对象,内存地址不一样。
第三种可以使用json,我喜欢这个,先将对象转换成json字符串,然后
Milestone oldMilestone=this.makeNewMilestone(milestone);
String oldMilestoneString=objectMapper.writeValueAsString(oldMilestone);
Milestone newMilestone=objectMapper.readValue(oldMilestoneString,Milestone.class);
这样怎样修改newMilestone中的数据,也不会影响到oldMilestone中的数据,应为两者只想的内存地址不一样