一个奇怪的问题是:为什么在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/