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