2010-08-11 119 views

回答

2

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

所有包括K.值(缓存性能)的

5

EnumMap的需求的实现方式中的元信息有关enum,特别值的数量。 Class对象提供了这个信息(国际海事组织最好去一个特定的枚举描述符类型)。如果你没有Class可用,你总是可以使用HashMap在一些惩罚。我想你可以创建一个可增长/未提交的EnumMap-Map

+0

HashMap不能为空,但如果它仅包含一些元素而不包含完整的keyUniverse,那很好。 – 2017-05-19 20:13:40

8

Tom's答案是正确的,但要解决您的其他问题:此信息不能从类型参数K推导出的原因归因于type erasure

1

泛型是一个编译时的特性,但是这个K类在运行时是需要的,在这种情况下泛型不会做。

2

正如其他人指出的泛型是一个编译器功能。 jvm对泛型本身没有真正的支持。这意味着通用信息不能在运行时使用。

对于EnumMap<K extends Enum>这意味着你在运行时得到一个EnumMap<Enum>没有关于K. Java泛型的这种限制可以通过周围的传递通用参数的类构造函数中工作的任何信息的类的对象仍然存在于运行。

相关问题