2013-04-16 53 views
0

除參數部分外,這兩種方法的實現完全相同。我想知道是否可以使用Java方法的通用版本將這兩種方法統一爲一體。這是可能的還是最好的方法是什麼?我正在考慮在這兩種情況下使用泛型T或Object類型作爲映射鍵。地圖的通用方法

void mapPopulator1 (Map<String, Integer> map, String key) 
{ 
    Integer value = map.get(key); 
    if (value != null) { 
     value = Integer.valueOf(value.intValue() + 1); 
    } 
    else { 
     value = Integer.valueOf(1); 
    } 
    map.put(key, value); 
} 

void mapPopulator2 (Map<EventObj, Integer> map, EventObj key) 
{ 
    Integer value = map.get(key); 
    if (value != null) { 
     value = Integer.valueOf(value.intValue() + 1); 
    } 
    else { 
     value = Integer.valueOf(1); 
    } 
    map.put(key, value); 
} 

回答

3

是的,你可以有一個通用的方法。

<T> void mapPopulatorGeneric(Map<T, Integer> map, T key) 

這聲明泛型類型T<T>,然後用它爲您的參數類型。

+0

但我在裏面使用Integer.valueOf(),這意味着一個參數必須是一個整數? – user2288494

+0

@ user2288494:這就是爲什麼「Map」的第二個類型參數仍然是一個「整數」而不是某種其他泛型類型。 – rgettman

+0

有沒有辦法使第二個參數也是通用的? – user2288494