2013-04-16 2 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: Вот почему параметр второго типа в «Карта» по-прежнему является «Целом», а не каким-то другим общим типом. – rgettman

+0

Это там способ сделать второй параметр тоже общим? – user2288494