为了账号安全,请及时绑定邮箱和手机立即绑定

深度克隆对象

深度克隆对象

幕布斯6054654 2019-05-21 16:04:48
深度克隆对象我想做的事情如下:MyObject myObj = GetMyObj(); // Create and fill a new objectMyObject newObj = myObj.Clone();然后更改未在原始对象中反映的新对象。我不经常需要这个功能,所以当有必要的时候,我会使用创建一个新对象然后单独复制每个属性,但它总是让我觉得有更好或更优雅的处理方式情况。如何克隆或深度复制对象,以便可以修改克隆的对象而不会在原始对象中反映任何更改?
查看完整描述

5 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

不使用的原因ICloneable不是因为它没有一个通用的接口。 不使用它的原因是因为它含糊不清。它不清楚你是否得到浅或副本; 这取决于实施者。

是的,MemberwiseClone做一个浅的副本,但相反的MemberwiseClone是不是Clone; 或许DeepClone,它可能不存在。当您通过其ICloneable接口使用对象时,您无法知道底层对象执行哪种克隆。(并且XML注释不会说清楚,因为您将获得接口注释而不是对象的Clone方法上的注释。)

我通常做的只是制作一个Copy完全符合我想要的方法。


查看完整回答
反对 回复 2019-05-21
?
长风秋雁

TA贡献1757条经验 获得超7个赞

我更喜欢复制构造函数到克隆。意图更清晰。


查看完整回答
反对 回复 2019-05-21
  • 5 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号