1. ホーム
  2. java

[解決済み] hashCode()をオーバーライドするオブジェクトのユニークIDを取得する方法は?

2022-02-19 02:03:03

質問

Javaでクラスがオーバーライドされない場合 ハッシュコード() , このクラスのインスタンスを印刷すると、きれいな一意の数字が得られます。

ObjectのJavadocには、以下のように書かれています。 ハッシュコード() :

Objectクラスで定義されたhashCodeメソッドは、実用的な範囲で、異なるオブジェクトに対して異なる整数を返します。

しかし、そのクラスが ハッシュコード() を取得するにはどうすればよいですか? のユニークな番号を教えてください。

解決方法は?

System.identityHashCode(yourObject) は、yourObject の「元の」ハッシュコードを整数値で返します。一意性は必ずしも保証されていません。Sun JVMの実装は、このオブジェクトのオリジナルのメモリーアドレスに関連する値を与えますが、これは実装の詳細であり、それに依存してはいけません。

EDIT: Tomのコメント(メモリアドレスとオブジェクトの移動)を受けて、回答を修正しました。