【发布时间】:2013-05-21 01:19:20
【问题描述】:
为什么我不能像这样创建EnumMap:
EnumMap<FunkyTrolls, int> amountMap;
我想计算并保存每种类型的巨魔数量。这样做的好方法是什么?
【问题讨论】:
-
通过使用您已经在使用的 EnumMap,但使用整数?
-
最好让每个枚举产生一个小的
int,然后使用数组而不是映射。
为什么我不能像这样创建EnumMap:
EnumMap<FunkyTrolls, int> amountMap;
我想计算并保存每种类型的巨魔数量。这样做的好方法是什么?
【问题讨论】:
int,然后使用数组而不是映射。
只需使用Integer。泛型仅适用于对象,不适用于原始类型,但 Java 现在具有自动装箱和取消装箱功能。
这应该可行:
Map<FunkyTrolls, Integer> amountMap = new EnumMap<FunkyTrolls, Integer>();
amountMap.put(FunkyTrolls.VERY_FUNKY_TROLL, 100);
【讨论】:
Integer 是int 的对象变体。自动装箱是由编译器将 int “转换”为 Integer 对象实例(因此您似乎存储了 int,但它被转换为 Integer)。请注意null 可能存储在Map 中,但int 显然不能为空(因为根本不是对象引用,只是一个值)。我会让你猜猜自动拆箱:)