公式ドキュメントには情報が見つかりませんでした。Boolean.hashCode(boolean b)
true と false の 2 つの素数 1231 と 1237 を返すことはわかっています。での同様の実装を期待していAtomicBoolean
ます。しかし、逆コンパイルされたクラスファイルでは、の呼び出しpublic native int hashCode();
のように見えますObject
-それは、メモリの場所を返すことを意味しますか?
質問する
174 次
4 に答える
3
パッケージの概要は、hashCode
がオーバーライドされない理由を示していAtomicBoolean
ます。
アトミック クラスは、java.lang.Integer および関連クラスの汎用的な置き換えではありません。
equals
、 、hashCode
などのメソッドは定義されていませんcompareTo
。(アトミック変数は変更されることが予想されるため、ハッシュ テーブル キーの選択としては適切ではありません。)
それはメモリの場所を返すということですか?
使用する JVM によって異なりますが、通常はメモリ アドレスから派生します。他の JVM は、乱数のみを使用する場合があります。
于 2017-01-03T18:09:44.280 に答える
0
java.util.concurrent.atomic.AtomicBoolean はオブジェクト メソッドの hashode を使用しますが、これはクラスでオーバーライドされません。したがって、オブジェクト クラスのデフォルトの hascode を使用します。
于 2017-01-03T18:11:46.167 に答える