Java中的深浅克隆

来源:互联网 发布:centos ssh服务重启 编辑:程序博客网 时间:2024/05/09 16:01
笔者最近看了java的克隆机制,借此机会跟大家分享。
首先,我们为什么要用到克隆机制呢?想必大家都知道,就是为了实现纯粹的值传递,而不是复制对象的引用,避免后续操作修改原对象(被复制者)的数据。

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

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

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

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

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


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


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

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

这里写图片描述




1 0
原创粉丝点击