📑

100DaysOfJava - [Day 5] `equals()`メソッドのオーバーライドについて

2024/05/14に公開

equals()メソッドの役割

  • equals()メソッドは、オブジェクト同士が等しいかどうかを判断するために使用されます。
  • オブジェクトの等価性比較を行う際に、equals()メソッドのオーバーライドが重要です。

equals()メソッドのオーバーライド

  1. equals()メソッドのシグネチャ

    equals()メソッドをオーバーライドする際には、以下のシグネチャに従う必要があります。

    @Override
    public boolean equals(Object obj) {
        // 実装
    }
    
  2. nullのチェック

    オブジェクトの比較を行う際には、nullチェックを行うことが重要です。引数がnullである場合、falseを返すことが一般的です。

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        // 比較ロジック
    }
    
  3. 型のチェック

    引数の型が自身のクラスと一致しているかをチェックし、一致しない場合はfalseを返すことが重要です。

  4. フィールドの比較

    オブジェクト同士が等しいかどうかを判断するためには、フィールドごとの比較を行うことが必要です。フィールドの値が等しい場合はtrueを、異なる場合はfalseを返します。

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        MyClass other = (MyClass) obj;
        return Objects.equals(field1, other.field1) &&
               Objects.equals(field2, other.field2);
    }
    

equals()メソッドの注意事項

  • equals()メソッドをオーバーライドする際には、hashCode()メソッドも適切に実装することが重要です。
  • equals()メソッドのオーバーライドは、等価性の定義に従って正確に実装することが重要です。例えば、Stringクラスでは内容が等しいかどうかが等価性の基準です。

結論

equals()メソッドのオーバーライドは、オブジェクトの等価性比較を正確に行うために重要です。適切な実装を行うことで、プログラムの正確性と可読性を向上させることができます。

GitHubで編集を提案

Discussion