2010-08-11 140 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泛型的這種限制可以通過周圍的傳遞通用參數的類構造函數中工作的任何信息的類的對象仍然存在於運行。

相關問題