重複の可能性あり:
Java: 常に equals をオーバーライドしますか?
equals
作成するクラスの関数をオーバーライドする必要がありますか?
非常に単純な属性のみを含む非常に単純なクラスであっても、等しいすべての属性が同等である必要がありますか?
ベストアンサー1
作成するすべてのクラスに対して equals 関数をオーバーライドする必要がありますか?
equals
オブジェクトが「何らかのデータを表す」場合、つまり、 、Person
またはCar
などのものをモデル化する場合 (これらは通常、コレクションなどになります) にのみオーバーライドします。または などRecipieIngredient
、他の種類のクラスの equals をオーバーライドしないでください。LoginServlet
DatabaseUtil
hashCode
上書きするときは必ず上書きすることを忘れないでくださいequals
。
(当然のフォローアップの質問です:)equals と hashCode をオーバーライドしないとどうなりますか?
任意の2つのオブジェクトが考慮される不平等ただし、まったく同じオブジェクトの場合は除きます。
[...] すべての属性が同等である必要がありますか?
通常はいそれはどのようにあなた等価性の概念を定義します。参照型の場合、再利用/委譲することができます。それ独自のオブジェクトを実装する場合は、 equals
(および)の実装を使用します。hashCode
関連する質問: