如何支援clone方法

2021-08-22 11:12:53 字數 870 閱讀 1818

1)實現cloneable介面,因為object的clone方法將檢查類是否實現了cloneable介面,如果沒有將丟擲異常clonenotsupportedexception物件。cloneable介面沒有任何方法,只是個標誌,所以只需要簡單得寫上implements cloneable即可。

2)改寫從object繼承而來的clone方法,使它的訪問許可權為public,因為為了防止意外的支援clone操作,object的clone方法是protected許可權。

3)在clone方法中,呼叫super.clone()方法。object的clone方法能夠按照舊物件的大小建立足夠的記憶體空間,並按位拷貝到新的物件空間。因此注意如果只呼叫super.clone方法,只能達到淺拷貝的效果。

如果想要達到深拷貝的效果,就需要自己編寫**拷貝每乙個成員變數。

舉例如下:

publicclassmyintegerimplementscloneable

publicvoidsetvalue(intvalue)

publicintgetvalue()

publicobject clone()

catch(clonenotsupportedexception e)

returnnull; }

}

曬曬clone 方法

先看乙個原型 prototype 模式的例子 定義 用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件.這個是乙個使用勺子的方法 package com.sui.prototype public class saladspoon extends abstractspoon 這個是乙個使用...

魔術方法 clone

clone 轉殖物件的時候自動呼叫。測試 如下 class wo w1 new wo 建立乙個新的物件 echo w1 username.輸出它的姓名 w1 say echo c1 w1 通過引用賦值,其實它們公用乙個位址,c1和w1只是相當於它的兩個不同的名字 echo c1 username.c...

拷貝(clone)方法集合

淺拷貝,拷貝可列舉屬性 使用這種技術將會忽略原型鏈。此外,巢狀物件並不會被轉殖,只是複製了他們的引用,因此淺拷貝後巢狀物件和原始物件仍然指向同乙個物件。let a b console.log b 可用於深度轉殖乙個簡單的物件,但他是 cpu 密集型的且只允許接受有效的 json。因此不適用於含有函式...