[解決済み] .equalsと.hashCodeは私のクラスでどのように機能するのでしょうか?
2022-09-20 06:03:58
質問
自分のクラスがあるとします。
public class MyObj { /* ... */ }
いくつかの属性とメソッドを持っています。equalsやhashCodeは実装していません。
equalsとhashCodeを呼び出したら、デフォルトの実装は何でしょうか?Objectクラスから?そして、それらは何ですか?デフォルトのequalsはどのように動作するのでしょうか?デフォルトのhashCodeはどのように動作し、何を返すのでしょうか? ==は同じオブジェクトを参照しているかどうかをチェックするだけなので簡単ですが、equals()とhashCode()メソッドはどうでしょうか?
どのように解決するのですか?
はい、デフォルトの実装はObjectのものです(一般的に言えば、equalsやhashCodeを再定義したクラスから継承した場合は、その実装を代わりに使用することになります)。
ドキュメントから。
Object クラスの equals メソッドは、オブジェクトの同値関係を最も区別して実装します。つまり、任意の非 NULL 参照値 x と y に対して、このメソッドは次のように返します。 xとyが同じオブジェクトを参照している場合のみ、このメソッドはtrueを返します(x == yはtrueの値を持ちます)。
合理的に実用的である限り、Objectクラスで定義されたhashCodeメソッドは、異なるオブジェクトのために異なる整数を返します。(これは通常、オブジェクトの内部アドレスを整数に変換することで実装されますが、この実装手法はJavaTMプログラミング言語では必須ではありません)。
関連
-
FindBugの使用概要
-
Java:未解決コンパイル問題の解決方法
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] 静的メソッドを使用する場合
-
[解決済み] 2つのJavaScriptオブジェクトの等質性を判断する方法は?
-
[解決済み] JavaでequalsとhashCodeをオーバーライドする際に考慮すべき事項は?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] JavaでequalsとhashCodeのメソッドをオーバーライドする必要があるのはなぜですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
型に解決できない エラー解決
-
プロジェクトの依存関係を解決できない。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
JAVA_HOME環境変数が正しく定義されていない問題を解決する
-
が 'X-Frame-Options' を 'sameorigin' に設定したため、フレーム内に存在する。
-
ジャバアレイ
-
XXX型を囲むインスタンスがJavaでアクセスできない
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
コンストラクタDate()が未定義である問題