Java核心知識 基礎七 JAVA 複製


Java核心知識 基礎七 JAVA 複製

將一個對象的引用複製給另外一個對象,一共有三種方式。第一種方式是直接賦值,第二種方式 是淺拷貝,第三種是深拷貝。所以大家知道了哈,這三種概念實際上都是為了拷貝對象。

1. 直接賦值複製

直接賦值。在 Java 中,A a1 = a2,我們需要理解的是這實際上覆制的是引用,也就是 說 a1 和 a2 指向的是同一個對象。因此,當 a1 變化的時候,a2 裡面的成員變量也會跟 著變化。

2. 淺複製(複製引用但不復制引用的對象)

創建一個新對象,然後將當前對象的非靜態字段複製到該新對象,如果字段是值類型的, 那麼對該字段執行復制;如果該字段是引用類型的話,則複製引用但不復制引用的對象。 因此,原始對象及其副本引用同一個對象。

class Resume implements Cloneable{

public Object clone() {

try {

return (Resume)super.clone(); } catch (Exception e) {

e.printStackTrace();

return null;

}

}

}

3. 深複製(複製對象和其應用對象)

深拷貝不僅複製對象本身,而且複製對象包含的引用指向的所有對象。


Java核心知識 基礎七 JAVA 複製

4. 序列化(深 clone 一中實現)

在 Java 語言裡深複製一個對象,常常可以先使對象實現 Serializable 接口,然後把對 象(實際上只是對象的一個拷貝)寫到一個流裡,再從流裡讀出來,便可以重建對象。


分享到:


相關文章: