『壹』 Java 基礎知識之 深拷貝與淺拷貝(Cloneable介面、clone方法)
淺拷貝與深拷貝是復制Java對象時的兩種方式。基本數據類型會復制出另一份,而引用類型復制的是指針,指向相同的堆內存地址。深拷貝會遞歸復制對象的所有欄位和引用指向的對象,確保新對象與原始對象的獨立性。淺拷貝僅復制基本數據類型和引用的指針。Java的`Cloneable`介面與`clone`方法用於實現拷貝,`Cloneable`介面標記類支持`clone`方法的使用。深拷貝實現時需覆寫`clone`方法,處理類中每一個引用類型,確保其獨立副本的創建。淺拷貝例子中,`Person`類的`clone`方法僅復制了`age`欄位,而`name`欄位為引用類型,拷貝的是指針。深拷貝例子中,`Person`類的`clone`方法創建了`name`的新副本,確保了新對象與原始對象的獨立性。使用`clone`方法復制對象時,需要類實現`Cloneable`介面,否則會拋出`CloneNotSupportedException`異常。然而,`clone`方法的設計存在爭議,有人認為將其放在`Cloneable`介面內更為合理。