2013-05-21 4 views
2

Почему я не могу создать EnumMap вроде этого:Хранить примитивные значения в качестве EnumMap

EnumMap<FunkyTrolls, int> amountMap; 

Я хочу, чтобы подсчитать и сохранить количество троллей каждого типа. Каков хороший способ сделать это?

+0

с помощью EnumMap вы уже используете, но с Целые? – greedybuddha

+1

Возможно, вам лучше сделать каждое перечисление, создавая небольшой 'int', а затем использовать массив вместо карты. – dasblinkenlight

ответ

4

Просто используйте Integer. Generics работает только с объектами, а не с примитивными типами, но Java теперь имеет авто-бокс и -боксинг.

Это должно работать:

Map<FunkyTrolls, Integer> amountMap = new EnumMap<FunkyTrolls, Integer>(); 
amountMap.put(FunkyTrolls.VERY_FUNKY_TROLL, 100); 
+0

Итак, Integer - это класс-оболочка для примитивного int? Что такое авто-бокс? – Moberg

+0

'Integer' является объектным вариантом' int'. Авто-бокс «преобразует» int в экземпляр объекта Integer компилятором (так что вы, кажется, храните 'int', но преобразуется в' Integer'). Обратите внимание, что 'null', вероятно, может быть сохранено в' Map', но 'int', очевидно, не может быть null (как не ссылка на объект вообще, просто значение). Я дам вам угадать авто-unboxing :) –

+0

Спасибо. Хотя я только заметил, что хочу делать ++ для сумм (в то время как петля над фанки троллей). Вероятно, карта не так хороша для этого ... – Moberg

Смежные вопросы