文章图片
文章图片
文章图片
文章图片
文章图片
我们在上一篇文章中讲了一些克隆的基本概念 , 以及克隆的分类 , 今天我们详细聊一聊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
- 亚略特|技术为根,深扎场景,亚略特获得深圳市“专精特新”企业认证
- iOS|面试珍藏:最常见的20道Java面试题
- Java|液晶电视哪个牌子好?2022年液晶电视性价比排行榜前5名
- 京东|Java:有哪些快速学习Java语言的技巧?
- 宇宙深处出现罕见场景,两个黑洞相撞后,释放的能量是太阳的8倍
- 为什么老鹰的高度我们可超越,鲸鱼的最低下潜深度却做不到?
- 深国际·武汉蔡甸综合物流港项目顺利通过政府联合验收
- 为什么植物的年龄可达上千岁?科学家深入探究,揭开植物长寿之谜
- Java|天玑9000+正式发布:主频更高,性能更强,这下稳了?
- Java|网站关键词seo排名在百度前三页怎么优化?