我有下面的類:轉換地圖<T>派生
class DerivedMap extends Hashmap<String,Object>
{}
我用,因爲我想要實現此類型的地圖的一些自定義操作。
然後我把這個類的實例傳遞給一個需要Map的外部API,這自然適用。
問題是我也從Map API獲取Map實例作爲返回值。由於真正的對象隱藏在api選擇的界面後面,我知道我不能僅僅投射它。
那麼,如何將Map轉換爲我的自定義DerivedMap?我必須手動複製所有的鍵/值嗎?
謝謝。
我有下面的類:轉換地圖<T>派生
class DerivedMap extends Hashmap<String,Object>
{}
我用,因爲我想要實現此類型的地圖的一些自定義操作。
然後我把這個類的實例傳遞給一個需要Map的外部API,這自然適用。
問題是我也從Map API獲取Map實例作爲返回值。由於真正的對象隱藏在api選擇的界面後面,我知道我不能僅僅投射它。
那麼,如何將Map轉換爲我的自定義DerivedMap?我必須手動複製所有的鍵/值嗎?
謝謝。
您可以創建這樣一個構造函數:
class DerivedMap extends HashMap<String, Object> {
public DerivedMap(Map<String, Object> map) {
super(map);
}
}
,然後從Map
這樣創建DerivedMap
:
derivedMap = new DerivedMap(otherMap);
的super(map)
調用HashMap
構造函數,拷貝參數的所有映射映射到新創建的地圖。從文檔:
構造一個新的HashMap具有與指定的Map相同的映射。
啊。當然。非常感謝你。 – monoceres 2011-01-29 16:51:15
putAll()[和另外7個字符] – bestsss 2011-01-29 16:45:30