<分区>
我一直认为 enum hashCode 指的是 Java 中的 ordinal,因为 ordinal 似乎是 hashCode 的完美候选者,但事实证明 enum hashCode 实际上是指默认的 hashCode 对象 实现。
我明白,这与 JLS 并不矛盾,但这仍然让我感到惊讶,我想不出为什么要这样做。虽然我猜想 JVM 可能会以某种方式依赖它来提供独特的保证,但这对 64 位 JVM 来说不再适用。
我已经检查了 JDK 1.6 和最新的 JDK 7,两者的方式相同。
有谁知道为什么会这样吗?
使用 ordinal 作为 hashCode 非常有意义,因为它满足所有需要的凭据,而且它甚至从一个 JVM 开始到另一个都是一致的,这不是必需的,但拥有它是件好事。