为什么EnumMap构造函数需要类参数?

pra*_*dvk 12 java enums

EnumMap类构造函数需要类作为参数.大多数时候K.class作为参数传递.我仍然没有得到接受这个作为论据的原因,而不是从K推断.

谢谢
- pkc

mik*_*kej 9

汤姆的答案是正确的,但要解决你的另一点:这个信息不能仅仅从类型参数中推断出来的原因K是由于类型擦除.


Tom*_*ine 5

的实现EnumMap需要的元信息有关enum,特别是值的数量.该Class对象提供了这些信息(对于特定的枚举描述符类型,最好是IMO).如果您没有Class可用的,您可以随时使用HashMap.我想你可以创造一个可成长/未定型EnumMapMap.


Boz*_*zho 2

因此Map知道所有可能的键。它(内部)称为keyUniverse. 评论说:

组成 K 的所有值。(为了性能而缓存