第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于Java可克隆

關(guān)于Java可克隆

瀟瀟雨雨 2019-07-30 15:12:30
關(guān)于Java可克隆我正在尋找一些解釋Java的教程Cloneable,但沒有得到任何好的鏈接,而且Stack Overflow正變得越來越明顯。我想知道以下內(nèi)容:Cloneable意味著我們可以通過實現(xiàn)Cloneable接口來獲得克隆或?qū)ο蟮母北?。這樣做的優(yōu)點和缺點是什么?如果對象是復(fù)合對象,遞歸克隆如何發(fā)生?
查看完整描述

3 回答

?
叮當(dāng)貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

你應(yīng)該知道的第一件事Cloneable是 - 不要使用它。

Cloneable正確的方法實現(xiàn)克隆是非常困難的,并且努力是不值得的。

而不是使用其他選項,如apache-commons SerializationUtils(深度克?。┗?a >BeanUtils(淺層克?。蛘咧皇褂脧?fù)制構(gòu)造函數(shù)。

請參閱此處了解Josh Bloch關(guān)于克隆的觀點Cloneable,這解釋了該方法的許多缺點。(Joshua Bloch是Sun的一名員工,領(lǐng)導(dǎo)了許多Java功能的開發(fā)。)


查看完整回答
反對 回復(fù) 2019-07-30
?
湖上湖

TA貢獻2003條經(jīng)驗 獲得超2個贊

不幸的是,Cloneable本身只是一個標(biāo)記接口,它是:它沒有定義clone()方法。

做的是改變受保護的Object.clone()方法的行為,該方法將為不實現(xiàn)Cloneable的類拋出CloneNotSupportedException,并為那些執(zhí)行成員的類執(zhí)行淺層復(fù)制。

即使這是您正在尋找的行為,您仍然需要實現(xiàn)自己的clone()方法才能將其公開。

在實現(xiàn)你自己的clone()時,我們的想法是從super.clone()創(chuàng)建的對象開始,它保證是正確的類,然后在淺副本不是什么的情況下再做任何其他字段。你要。從clone()調(diào)用構(gòu)造函數(shù)會有問題,因為如果子類想要添加自己的附加可克隆邏輯,這會破壞繼承; 如果是調(diào)用super.clone(),在這種情況下會得到錯誤類的對象。

這種方法繞過了構(gòu)造函數(shù)中可能定義的任何邏輯,這可能會產(chǎn)生問題。

另一個問題是,任何忘記覆蓋clone()的子類都會自動繼承默認(rèn)的淺拷貝,這可能不是你想要的可變狀態(tài)(現(xiàn)在將在源和副本之間共享)。

大多數(shù)開發(fā)人員出于這些原因不使用Cloneable,而只是實現(xiàn)了一個復(fù)制構(gòu)造函數(shù)。

有關(guān)Cloneable的更多信息和潛在缺陷,我強烈推薦Joshua Bloch撰寫的Effective Java一書


查看完整回答
反對 回復(fù) 2019-07-30
?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

  1. 克隆調(diào)用一種超語言的構(gòu)造對象的方式 - 沒有構(gòu)造函數(shù)。

  2. 克隆要求您以某種方式處理CloneNotSupportedException - 或者打擾客戶端代碼來處理它。

  3. 好處很小 - 您不必手動編寫復(fù)制構(gòu)造函數(shù)。

所以,明智地使用Cloneable。與您為完成所有事情所需的努力相比,它沒有給您足夠的好處。


查看完整回答
反對 回復(fù) 2019-07-30
  • 3 回答
  • 0 關(guān)注
  • 330 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號