1
爲什麼我不能克隆ConcurrentHashMap
?克隆ConcurrentHashMap
ConcurrentHashMap<String, String> test = new ConcurrentHashMap<String, String>();
test.put("hello", "Salaam");
ConcurrentHashMap<String, String> test2 = (ConcurrentHashMap<String, String>) test.clone();
System.out.println(test2.get("hello"));
如果我使用HashMap
而不是ConcurrentHashMap
,它的工作原理。
因爲,不像['HashMap'](https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html),['ConcurrentHashMap'](HTTPS: //docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html)不實現['Cloneable'](https://docs.oracle.com/javase/8/文檔/ API /爪哇/郎/ Cloneable.html)。事實突出顯示,您的代碼**不會編譯**,即該方法不可用! – Andreas
@Andreas:儘管有這個名字,但實現'Cloneable'並不意味着你支持'clone',並且支持'clone'不需要你實現'Cloneable'。 'Cloneable'實際上並沒有將'clone'作爲公共方法。這是「克隆」設計的奇怪缺陷之一。 – user2357112
支持'clone'確實需要實現'Cloneable'接口@ user2357112。 「在未實現Cloneable接口的實例上調用Object的clone方法會導致引發異常CloneNotSupportedException。」 - https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html –