
文章图片

文章图片

文章图片

文章图片

文章图片
我们在上一篇文章中讲了一些克隆的基本概念 , 以及克隆的分类 , 今天我们详细聊一聊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
- 坐在隔壁工位的哔哥最近感慨很深|盘点qq下架的衍生品
- 程序员|程序员的口味变了!C++首次逆袭JAVA:跻身最受欢迎编程语言TOP3
- Galaxy|三星S22+成为老外眼中印象最深刻的旗舰:直屏 外观设计最佳
- Java|华为笔记本双12大促开启 智慧体验让办公学习更高效
- Java|京东第一刀落下:多个副总裁卸任 刘强东嫡系人手接管
- Java|荣耀Magic5Pro很大胆,16GB+5000mAh+100W,香喷喷
- 本文转自:烟台日报烟台芥子生物技术有限公司深耕微流控技术|奔向POCT产业“新蓝海”
- Java|MIUI14把精简当作核心卖点,国产系统急需做减法
- iphone xr|iPhone XR换14Pro,深度使用两个月,这些心里话不吐不快
- VR|华为FreeBuds Pro 2深度体验评测:双12大促买它就对了
