private boolean isValidKey(Object key) {
if (key == null)
return false;
// Cheaper than instanceof Enum followed by getDeclaringClass
Class<?> keyClass = key.getClass();
return keyClass == keyType || keyClass.getSuperclass() == keyType;
}
从上述方法的最后一行可以看出,为什么 EnumMap 实现会检查键的超类?如果没有任何东西可以从枚举中得到,为什么需要这个检查?