我基本上需要一個HashMap
的稍微修改版本,無論何時讀取或寫入值需要轉換。到目前爲止,我已經試過如下:什麼是構建Java Map的正確方法,它是一個HashMap,但轉換輸入和輸出上的值?
public class MyMap implements Map<String, Object> {
private HashMap<String, MyType> map;
public Object get(Object key) {
return map.get(key).getValue();
}
public Object put(String key, Object value) {
return map.put(key, MyType.wrap(value)).getValue();
}
... all other methods of the Map interface are handled by map
}
我希望這是所有我需要做的,但我用這兩種方法掙扎:
Set<Entry<String,Object>> entrySet()
Collection<Object> values()
那些我不能就這麼着地圖的值需要逐一轉換。當然,我基本上可以從HashMap中複製實現,並對其進行修改以適應我的需要,但這似乎是一個相當不好的解決方案,而且在我這樣做之前,我想確保我不會錯過更好的解決方案。
有沒有更好的方法?
爲什麼你不能直接停止地圖中的包裝值? –
它認爲這整個模式是相當醜陋 – Bohemian
我不能這樣做的原因是,該getValue()實際上從一些可變的來源檢索值。如果我將直接在地圖中檢索到的值,他們不會再被更新。 –