2011-01-29 37 views
1

我有下面的類:轉換地圖<T>派生

class DerivedMap extends Hashmap<String,Object> 
{} 

我用,因爲我想要實現此類型的地圖的一些自定義操作。

然後我把這個類的實例傳遞給一個需要Map的外部API,這自然適用。

問題是我也從Map API獲取Map實例作爲返回值。由於真正的對象隱藏在api選擇的界面後面,我知道我不能僅僅投射它。

那麼,如何將Map轉換爲我的自定義DerivedMap?我必須手動複製所有的鍵/值嗎?

謝謝。

+0

putAll()[和另外7個字符] – bestsss 2011-01-29 16:45:30

回答

4

您可以創建這樣一個構造函數:

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相同的映射。

+0

啊。當然。非常感謝你。 – monoceres 2011-01-29 16:51:15