HashMap不支援深拷貝問題解決方案

2021-09-29 23:54:38 字數 1339 閱讀 2585

當構造乙個複雜耗時的物件的時候,而且實際用的時候僅僅只是需要改動一小部分,這個時候我們往往會想到使用實現cloneable介面來開啟物件轉殖。但是這裡有乙個問題就是,對於自定義物件無法支援深拷貝,hashmap實現了cloneable介面,自然也是存在這種問題的。

public

class

test3

}

cn.itoak.storm.clone.person@4dd8dc3

cn.itoak.storm.clone.person@4dd8dc3

核心:requiredcloneable介面

public

inte***ce

requiredcloneable

extends

cloneable

核心:自定義deepclonehashmap

public

class

deepclonehashmap

requiredcloneable

>

extends

hashmap

}

以上兩段**可直接使用,需要注意的地方:

(1)v extends requiredcloneable,限制v的型別;

(2)value.clone(),這個就是為什麼需要使用requiredcloneable介面的原因

自定義person類

public

class

person

implements

requiredcloneable

catch

(clonenotsupportedexception e)

return null;

}}

public

class

test

}

cn.itoak.storm.clone.person@46f7f36a

cn.itoak.storm.clone.person@421faab1

以上是筆者在工作中發現的問題,以及最後的解決方案,以上方案不會處理更深層次的拷貝,意思也就是說不會拷貝person類中自定義的類,由於筆者的問題不涉及更深次的拷貝,因而也沒有繼續處理,這裡僅僅是拋磚引玉,提供一種解決思路吧。

mysql不支援 MySQL不支援的特性

mysql 1 不支援物化檢視。2 不支援位圖索引。3 不支援並行查詢。4 不支援雜湊關聯,mysql的所有關聯都是巢狀迴圈關聯。不過,可以通過建立乙個雜湊索引來曲線實現。5 不允許對同一表同時進行查詢和更新。報錯 update tb1 as outer tb1 set cnt select cou...

rsyslog input 不支援變數

input type imfile file usr local apache tomcat 7.0.55 8082 logs localhost access log.txt tag zjzc api access01 severity info facility local5 不支援這種寫法 i...

linux vi 不支援中文

問題說明 網頁html與chi語言的結合,使用c語言輸出html語句,因為其中用到中文,出現亂碼 問題解決 1.在cgi中用到的 使用utf 8編碼,utf 8是國際統一的中文編碼 具體語句為 fprintf cgiout,metacharset utf 8 參考文章 2.上述步驟完成後,重新編譯,...