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

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

如何在Java中對象進行深度復制?

如何在Java中對象進行深度復制?

郎朗坤 2019-06-12 15:09:44
如何在Java中對象進行深度復制?在java中,實現(xiàn)深度對象復制函數(shù)有點困難。您采取了哪些步驟來確保原始對象和克隆對象不共享引用?
查看完整描述

3 回答

?
哈士奇WWW

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

一種安全的方法是序列化對象,然后反序列化。這確保了一切都是全新的參考。

這是一篇文章關于如何有效地做到這一點。

注意:類有可能覆蓋序列化,例如新實例為單身漢而創(chuàng)建的。當然,如果您的類不是可序列化的,這也是不起作用的。


查看完整回答
反對 回復 2019-06-12
?
慕萊塢森

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

有幾個人提到使用或重寫Object.clone()..別這么做。Object.clone()存在一些主要問題,而且在大多數(shù)情況下都不鼓勵使用它。請參閱項目11,從“有效Java“約書亞·布洛赫給你一個完整的答案,我相信你可以安全地使用Object.clone()在基本類型數(shù)組上,但是除此之外,您還需要正確地使用和重寫克隆。

依賴序列化(XML或其他方式)的方案是不切實際的。

這里沒有簡單的答案。如果要深入復制對象,則必須遍歷對象圖,并通過對象的復制構(gòu)造函數(shù)或靜態(tài)工廠方法顯式地復制每個子對象。不變(例如)String不需要復制。順便說一句,出于這個原因,你應該贊成不變性。


查看完整回答
反對 回復 2019-06-12
?
開心每一天1111

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

您可以使用序列化進行深度復制,而無需創(chuàng)建文件。

您希望深入復制的對象將需要implement serializable..如果類不是最終類或無法修改,則擴展類并實現(xiàn)可序列化。

將類轉(zhuǎn)換為字節(jié)流:

ByteArrayOutputStream bos = new ByteArrayOutputStream();ObjectOutputStream oos = new ObjectOutputStream(bos);oos.writeObject(object);
oos.flush();oos.close();bos.close();byte[] byteData = bos.toByteArray();

從字節(jié)流還原類:

ByteArrayInputStream bais = new ByteArrayInputStream(byteData);(Object) object = (Object) new ObjectInputStream(bais).readObject();


查看完整回答
反對 回復 2019-06-12
  • 3 回答
  • 0 關注
  • 1294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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