1、要實作物件拷貝必須實作一個Cloneable接口,如果不實作這個接口就會產生一個CloneNotSupportedException異常。其實這個介面一個方法都沒有,因此這類介面常被稱為標記介面。
2、Object 中有一個clone() 方法實作了淺拷貝。對於基本資料類型的成員變量,淺拷貝會直接進行值傳遞,也就是將該屬性值複製一份給新的對象,所以基本的資料型別直接進行淺拷貝即可。
對於可變的資料型別,例如Date物件就要實現深拷貝,當然Date類別自己實作了clone()方法,而例如String類別就沒有實作clone()方法,因為String物件是不可變字符序列,在它的生命週期中沒有任何方法能修改他所在記憶體中的字元序列,不同物件中的同類屬性引用同一個String是沒有問題的。
java學習影片教學:java學習影片
範例如下:
public class Main{ public static void main(String[] args){ } } class Employee implements Cloneable{ private int id; private Date date; public Employee(){} public Employee(int id){ this.id=id; this.date=new Date(); } @Override public Employee clone() throws CloneNotSupportedException{ Object t=super.clone();//此时的object中的拷贝只是浅拷贝 Employee clone=(Employee)t; clone.date=this.data.clone();//date类实现了深拷贝,直接调用即可 return clone; } } class Mannager extends Employee{ private String name; public Mannager(){ super(); } public Mannager(String name,int id){ super(id); this.name=name; } @Override public Mannager clone(){ Employee t=super.clone();//先把id date属性复制 Mannager clone=(Mannager)t; clone.name=t.name;//String 对象直接赋值引用 return clone; } }
更多java相關文章推薦:java入門教學
以上是java物件拷貝之深拷貝與淺拷貝的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。