for(MyClass.MYENUM e : MyClass.MYENUM.value){
myHashMap.put(e.name(), randomstuff);
}
myHashMap.get(MyClass.MYENUM);
当我把东西放进去时,为什么我必须使用e.name(),但是当我检索它时,我不必调用e.name()来获取字符串?
javadoc的Map
将put
和get
的签名显示为:
V put(K key, V value)
V get(Object key)
请注意,key
参数的类型不一致。
为什么它们不一致?
我认为答案是与List
API的先前版本向后兼容。但是无论出于什么原因,put
和get
都不一致],我们只需要处理它。
请注意,虽然您的代码可以编译,但实际上不起作用。放置和获取...时,您需要使用相同的键。否则get
将返回null
。
enum
在不同位置的行为如何?不是。实际上,您使用
enum
的方式不同……并且错误地……这就是(或将要)导致get
失败的原因。Java中的枚举是Enum
类型的子类。 Java中的枚举不是String
类型。