導航:首頁 > 編程語言 > java克隆實現

java克隆實現

發布時間:2025-06-07 00:12:59

『壹』 java 中 如果clone為什麼必須實現Cloneable介面

因為如果不繼承自Cloneable介面,當調用clone()時會拋出CloneNotSupportedException異常

以下是詳細講解:

Java的所有類都默認繼承java.lang.Object類,在java.lang.Object類中有一個方法clone()。JDK API的說明文檔解釋這個方法將返回Object對象的一個拷貝。要說明的有兩點:一是拷貝對象返回的是一個新對象,而不是一個引用。二是拷貝對象與用 new操作符返回的新對象的區別就是這個拷貝已經包含了一些原來對象的信息,而不是對象的初始信息。
怎樣應用clone()方法?
一個很典型的調用clone()代碼如下:
class CloneClass implements Cloneable{
public int aInt;
public Object clone(){
CloneClass o = null;
try{
o = (CloneClass)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return o;
}

有三個值得注意的地方,一是希望能實現clone功能的CloneClass類實現了Cloneable介面,這個介面屬於java.lang 包,java.lang包已經被預設的導入類中,所以不需要寫成java.lang.Cloneable。另一個值得請注意的是重載了clone()方 法。最後在clone()方法中調用了super.clone(),這也意味著無論clone類的繼承結構是什麼樣的,super.clone()直接或 間接調用了java.lang.Object類的clone()方法。下面再詳細的解釋一下這幾點。

應該說第三點是最重要的,仔細 觀察一下Object類的clone()一個native方法,native方法的效率一般來說都是遠高於java中的非native方法。這也解釋了為 什麼要用Object中clone()方法而不是先new一個類,然後把原始對象中的信息賦到新對象中,雖然這也實現了clone功能。對於第二點,也要 觀察Object類中的clone()還是一個protected屬性的方法。這也意味著如果要應用clone()方法,必須繼承Object類,在 Java中所有的類是預設繼承Object類的,也就不用關心這點了。然後重載clone()方法。還有一點要考慮的是為了讓其它類能調用這個clone 類的clone()方法,重載之後要把clone()方法的屬性設置為public。

那麼clone類為什麼還要實現 Cloneable介面呢?稍微注意一下,Cloneable介面是不包含任何方法的!其實這個介面僅僅是一個標志,而且這個標志也僅僅是針對 Object類中clone()方法的,如果clone類沒有實現Cloneable介面,並調用了Object的clone()方法(也就是調用了 super.Clone()方法),那麼Object的clone()方法就會拋出CloneNotSupportedException異常。

閱讀全文

與java克隆實現相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:58
Windows常用c編譯器 瀏覽:776
關於改善國家網路安全的行政命令 瀏覽:830
安卓如何下載網易荒野pc服 瀏覽:650
javainetaddress 瀏覽:100
蘋果4s固件下載完了怎麼解壓 瀏覽:996
命令zpa 瀏覽:281
python編譯器小程序 瀏覽:940
在app上看視頻怎麼光線調暗 瀏覽:536
可以中文解壓的解壓軟體 瀏覽:588
安卓卸載組件應用怎麼安裝 瀏覽:908
使用面向對象編程的方式 瀏覽:335
程序員項目經理的年終總結範文 瀏覽:924
內衣的加密設計用來幹嘛的 瀏覽:428
淮安數據加密 瀏覽:289
魔高一丈指標源碼 瀏覽:979
松下php研究所 瀏覽:166
c回調java 瀏覽:396
夢幻端游長安地圖互通源碼 瀏覽:742
電腦本地文件如何上傳伺服器 瀏覽:309