
文章图片

文章图片

文章图片

文章图片

文章图片
我们在上一篇文章中讲了一些克隆的基本概念 , 以及克隆的分类 , 今天我们详细聊一聊Java中的深克隆和浅克隆 。
首先 , 还是先看两者图回忆下两者的区别 。
浅克隆
深克隆
对于浅克隆来说 , 一般的步骤如下:
1.被克隆的类需要实现Cloneable接口这个接口是一个标记接口
2.覆盖clone方法 , 访问权限设置为public 。 在方法中调用super.clone()方法得到需要复制的对象 。
具体代码如下:
结果是:
同理 , 我们看下深拷贝 。
为了方便演示 , 我们新增一个类:
然后在LowClassClone中引用这个类 , 结果如下:
其中 , clone方法和浅拷贝一样 , 执行结果是:
可以看出 , 引用属性还是使用的是同一个属性 , 如果我们修改l1对象的attach变量的值 , 那么l2变量的attach属性值也会跟着发生改变 。 这样 , 显然违背了拷贝的初衷 。
那么如何改进呢?
其实很简单 , 我们只需要做两件事:
1.Attach类和LowClassClone一样实现覆盖自己的clone方法
2.修改LowClassCLone的clone方法 , 使其能够复制引用变量
执行结果是:
两个对象不相同 , 两个对象的引用属性也不相同 , 达到深度克隆的目的 。
【Java|Java深克隆和浅克隆】\uD83D\uDE4F如果内容对您有帮助 , 希望您能多多点赞收藏加关注 , 激励作者创作出更加优质内容 , 谢谢!\uD83D\uDE4F
- 成年后,近视度数还会再加深吗 蚂蚁庄园今日答案6月29日
- 在南极3500米的深海,科学家发现新物种,这是个透明的肉球?
- 为什么现在很少有人提及“克隆技术”了?“克隆技术”有何缺点?
- Java|干翻小米,红米又出超大杯旗舰,120W+2K直屏+双旗舰芯
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- NVIDIA的DLSS技术已经深受玩家和开发者认可|性能2倍于DLSS!AMD游戏神技FSR 2.0正式支持Xb
- Java|Gamamobi CEO黄继德:我们的元宇宙游戏不担心体验落差
- Java|美国传来新消息,ASML态度也变了,这一切竟如此之快
- Java|李佳琦消失扯下阿里“遮羞布”,原来淘宝根本就没有护城河
