关闭

Java中的深浅克隆

标签: java对象class克隆
366人阅读 评论(0) 收藏 举报
分类:
笔者最近看了java的克隆机制,借此机会跟大家分享。
首先,我们为什么要用到克隆机制呢?想必大家都知道,就是为了实现纯粹的值传递,而不是复制对象的引用,避免后续操作修改原对象(被复制者)的数据。

java中克隆分为浅克隆和深克隆:

前者仅仅复制所考虑的对象,而不复制它所引用的对象;后者把要复制的对象所引用的对象都复制了一遍。

两者共同点在于都要让对应的类实现Cloneable接口,实现clone()方法。

笔者在Eclipse上面测试了一下,很直观的观察出深浅克隆的区别所在。

1,在对象内部不存在其他对象的引用的时候,不涉及到到深克隆的问题(p2的改变不会引p1的变化)
2,一旦涉及到内部其他对象的引用的时候,浅克隆的弊端就暴露出来(s2的改变引起了s1的变化,注意grade不变,因为它是基本类型,不是对象引用)
3,针对浅克隆存在的问题,我们可以在clone()方法内部稍作调整即可解决该问题(s2改变不会引起s1的变化)


除此之外,深克隆方式还有让目标类实现Serializable接口,重建新对象的时候,利用流对象进行写入即可。


文章首发地址为微信公众号:猿blog
文章首发地址为微信公众号:猿blog
文章首发地址为微信公众号:猿blog

重要的事情说三遍!!! 
更多干货文章,还请欢迎大家关注和推荐。

这里写图片描述




1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1397次
    • 积分:136
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类