一个奇怪的问题是:为什么在EnumMap的构造函数中需要enum.class?
自从传入模板以来,它就知道其类型...

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

最佳答案

“自从模板传入以来,它就知道其类型...”

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

假定该类用于确定用于初始化映射大小的唯一枚举值的数量,并且由于该信息无法通过类型系统(由于泛型的限制)传递给该类,因此您需要传递确切的Class实例。

关于java - 为什么在EnumMap的构造函数中需要enum.class?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40975358/

10-10 10:06