序数はhashCodeの完全な候補のように見えるため、 enum hashCodeはJava の序数を参照していると常に考えていましたが、 enum hashCodeは実際にはデフォルトのhashCode オブジェクト実装を参照していることが判明しました。
これはJLSと矛盾しないことは理解していますが、それでもこれは驚きであり、なぜこのように作成されたのかわかりません。私はJVMを推測しますが、一意の保証を提供するために何らかの形でこれに依存できた可能性がありますが、これは 64 ビットJVMには当てはまりません。
JDK 1.6 と最新の JDK 7 をチェックインしましたが、これは両方で同じ方法です。
なぜこのように作られたのか、理由を知っている人はいますか?
ordinalをhashCodeとして使用することは完全に理にかなっています。これは、必要なすべての資格情報を満たし、ある JVM の開始から別の JVM の開始まで一貫性があるためです。これは必須ではありませんが、あると便利です。