Java clone浅复制与深复制的区别
生活随笔
收集整理的這篇文章主要介紹了
Java clone浅复制与深复制的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 概述
Java對(duì)象要調(diào)用 clone 進(jìn)行復(fù)制,必須實(shí)現(xiàn) Cloneable 接口,否則會(huì)拋出CloneNotSupportedException的異常。
clone 方法默認(rèn)是淺復(fù)制,如果要實(shí)現(xiàn)深復(fù)制,那必須在clone方法調(diào)用對(duì)象成員的復(fù)制方法。
- 淺復(fù)制:復(fù)制對(duì)象時(shí),對(duì)象內(nèi)部引用類(lèi)型的成員,仍然共用內(nèi)存空間。此時(shí)A對(duì)象修改這個(gè)成員的屬性,B對(duì)象的該成員也會(huì)受影響。
- 深復(fù)制:復(fù)制對(duì)象時(shí),對(duì)象內(nèi)部引用類(lèi)型的成員,也會(huì)重新開(kāi)辟新的空間。此時(shí)A對(duì)象和B對(duì)象完全互不干擾。
2. 淺復(fù)制clone
Grade: 班級(jí)類(lèi),實(shí)現(xiàn)了Cloneable接口
@Data public class Grade implements Cloneable{//名稱(chēng)private String nam總結(jié)
以上是生活随笔為你收集整理的Java clone浅复制与深复制的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Elasticsearch Metric
- 下一篇: Java多线程(一):Runnable和