重複の可能性:
JavaオブジェクトでのhashCodeの実装は何ですか?
Objectクラスを参照しているときに、hashCode()メソッドの宣言しかないことがわかりました。実装部分はどこにありますか?実装がない場合、hashCode()メソッドはどのように結果を返しますか?
重複の可能性:
JavaオブジェクトでのhashCodeの実装は何ですか?
Objectクラスを参照しているときに、hashCode()メソッドの宣言しかないことがわかりました。実装部分はどこにありますか?実装がない場合、hashCode()メソッドはどのように結果を返しますか?
ネイティブコードで実装されています。実装に関しては、もう少し注意が必要です。デフォルトの実装を変更できます。「Open JDK」ソースを見ると、次のオプションが表示されます。
-XX:hashCode=n (0 から 5)。
ここで詳細な実装を見つけることができます: http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/runtime/synchronizer.cpp
ソースコードとstatic inline intptr_t get_next_hash()
関数のコメントを検討してください。
このnative
キーワードは、ネイティブ コード (JVM) で実装されていることを示します。
実装部分はどこですか?
すでにフレームワークによって実装されています。ドキュメントを参照してください。
実装がない場合、hashCode() メソッドはどのように結果を返しますか?
ただし、カスタム タイプを作成する場合int
は、オブジェクトの現在の状態を適切に表す値を生成する必要があります。これがその良い例です。