为什么在EnumMap的构造函数中需要enum.class?

时间:2016-12-05 13:27:08

标签: java enums

一个奇怪的问题是:为什么enumMap的构造函数中需要enum.class? 它知道它的类型,因为它传递给模板...

意思是,为什么我们必须使用:EnumMap<E,V> e = new EnumMap<E,V>(E.class);,我们只能使用:EnumMap<E,V> e = new EnumMap<E,V>();

1 个答案:

答案 0 :(得分:4)

“它知道它的类型,因为它传递了模板......”

Java中不存在模板的概念。在类型检查期间使用泛型但在运行时期间不使用该数据,这意味着在运行时期间实际代码将为EnumMap e = new EnumMap()

据推测,该类用于确定初始化地图大小的唯一枚举值的数量,并且因为该信息无法通过类型系统传递给类(由于泛型的限制),您需要传递精确的{ {1}}实例。