私は、アサーションが.equalsメソッドを呼び出すユニットテストプロジェクトに取り組んでいます。しかし、以前のプロジェクトの人々はこれらの方法を生成しませんでした。すべてのクラスは.equalsメソッドと.hashcodeメソッドを持つべきですか?
コード作成時にこれらのメソッドを自動生成することをお勧めしますか?すべてのコーダーがこれをしなければならないのでしょうか?
私は、.equalsメソッドと.hashcodeメソッドの詳細を検索していましたが、そのほとんどは実装またはオーバーライド方法に合わせているようです。
クラスの目的によって異なります。多くのクラスでは、 'Object'から継承した' equals'メソッドと 'hashCode'メソッドによって実装された" identity "はうまくいきます。 – Henry
これらの型のオブジェクトを比較する必要がある場合は、 'equals'と' hashCode'をオーバーライドする必要があります。また、オブジェクトをハッシュマップに入れるときに 'hashCode'をオーバーライドする必要があります。通常、1つがオーバーライドされると、他のものもオーバーライドされます。 – SomeDude
'equals'メソッドを*自動生成するのは良い方法ではありません。いくつかのクラスは、それらの状態フィールドのすべてによってそのアイデンティティを論理的に定義しているクラスはほとんどありません。自動生成された 'equals'メソッドが行うものと仮定します。インスタンスが等しいかどうかをチェックする場合は、分かりやすい 'equals'メソッドと' hashCode'メソッドを手作業で記述します。 – VGR