0

公式ドキュメントには情報が見つかりませんでした。Boolean.hashCode(boolean b)true と false の 2 つの素数 1231 と 1237 を返すことはわかっています。での同様の実装を期待していAtomicBooleanます。しかし、逆コンパイルされたクラスファイルでは、の呼び出しpublic native int hashCode();のように見えますObject-それは、メモリの場所を返すことを意味しますか?

4

4 に答える 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 に答える