
文章图片

文章图片

文章图片

文章图片

文章图片
我们在上一篇文章中讲了一些克隆的基本概念 , 以及克隆的分类 , 今天我们详细聊一聊Java中的深克隆和浅克隆 。
首先 , 还是先看两者图回忆下两者的区别 。
浅克隆
深克隆
对于浅克隆来说 , 一般的步骤如下:
1.被克隆的类需要实现Cloneable接口这个接口是一个标记接口
2.覆盖clone方法 , 访问权限设置为public 。 在方法中调用super.clone()方法得到需要复制的对象 。
【Java|Java深克隆和浅克隆】具体代码如下:
结果是:
同理 , 我们看下深拷贝 。
为了方便演示 , 我们新增一个类:
然后在LowClassClone中引用这个类 , 结果如下:
其中 , clone方法和浅拷贝一样 , 执行结果是:
可以看出 , 引用属性还是使用的是同一个属性 , 如果我们修改l1对象的attach变量的值 , 那么l2变量的attach属性值也会跟着发生改变 。 这样 , 显然违背了拷贝的初衷 。
那么如何改进呢?
其实很简单 , 我们只需要做两件事:
1.Attach类和LowClassClone一样实现覆盖自己的clone方法
2.修改LowClassCLone的clone方法 , 使其能够复制引用变量
执行结果是:
两个对象不相同 , 两个对象的引用属性也不相同 , 达到深度克隆的目的 。
\uD83D\uDE4F如果内容对您有帮助 , 希望您能多多点赞收藏加关注 , 激励作者创作出更加优质内容 , 谢谢!\uD83D\uDE4F
- Java|美国传来新消息,ASML态度也变了,这一切竟如此之快
- Java|三星E4屏+5000mAh,从2499跌至1699元,成红米K40s超强劲敌
- Java|动态代理是什么?有哪些应用?
- javascript|Web前端:Vue有哪些优缺点?
- 电池|评测:EOTech XPS2全息瞄准镜 搭配倍率镜之后 资深警官赞不绝口
- Java|第160天 交浅言深是大忌
- Java|发布至今下跌2400元,67W快充+三星2K屏,陶瓷旗舰一降再降
- Java|面向未来的高端轻薄本标杆!戴尔XPS 13 Plus是否值得选?
- Java|死心塌地的送快递12年:京东001号快递员金宜财,刘强东给了他什么
- 苹果|618苹果销量可见一斑,中国人崇洋媚外心里根深蒂固,这是很可悲的
