gpt4 book ai didi

java - 为什么 EnumMap 实现要检查键的父类(super class)?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:27 24 4
gpt4 key购买 nike

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 实现要检查键的父类(super class)?如果无法从枚举派生出任何东西,为什么需要进行此检查?

最佳答案

可以声明enum constants with bodies自定义他们的行为

enum Bar {
NORMAL, CUSTOM {
@Override
public String toString() {
return "different";
}
};
}

这些常量实现为 subclasses of the enum type.

The optional class body of an enum constant implicitly defines an anonymous class declaration (§15.9.5) that extends the immediately enclosing enum type.

为了使 EnumMap 映射与所有 enum 常量一起工作,因此需要通过检查键的父类(super class)是否为 enum< 来检查这种可能性 类型用于初始化 EnumMap(keyType)。

关于java - 为什么 EnumMap 实现要检查键的父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com