Equals 関数はいつオーバーライドすればよいですか? [重複] 質問する

Equals 関数はいつオーバーライドすればよいですか? [重複] 質問する

重複の可能性あり:
Java: 常に equals をオーバーライドしますか?

equals作成するクラスの関数をオーバーライドする必要がありますか?

非常に単純な属性のみを含む非常に単純なクラスであっても、等しいすべての属性が同等である必要がありますか?

ベストアンサー1

作成するすべてのクラスに対して equals 関数をオーバーライドする必要がありますか?

equalsオブジェクトが「何らかのデータを表す」場合、つまり、 、PersonまたはCarなどのものをモデル化する場合 (これらは通常、コレクションなどになります) にのみオーバーライドします。または などRecipieIngredient、他の種類のクラスの equals をオーバーライドしないでください。LoginServletDatabaseUtil

hashCode上書きするときは必ず上書きすることを忘れないでくださいequals

(当然のフォローアップの質問です:)equals と hashCode をオーバーライドしないとどうなりますか?

任意の2つのオブジェクトが考慮される不平等ただし、まったく同じオブジェクトの場合は除きます。

[...] すべての属性が同等である必要がありますか?

通常はいそれはどのようにあなた等価性の概念を定義します。参照型の場合、再利用/委譲することができます。それ独自のオブジェクトを実装する場合は、 equals(および)の実装を使用します。hashCode

関連する質問:

おすすめ記事