ホームページ >Java >&#&チュートリアル >Javaでequals()メソッドを適切にオーバーライドするにはどうすればよいですか?

Javaでequals()メソッドを適切にオーバーライドするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-20 19:00:18899ブラウズ

How to Properly Override the equals() Method in Java?

Java でquals() メソッドをオーバーライドする方法

equals() メソッドのオーバーライドは、カスタムの等価比較動作をカスタマイズするために不可欠です。 Java のオブジェクト。これを効果的に行うための包括的なガイドを次に示します。

問題:

指定されたスニペットでは、equals( を使用して年齢フィールドを比較しようとしたときにエラーが発生しました。 )、String オブジェクト用に設計されているためです。整数値には == 演算子の使用が必要です。

解決策:

このエラーを解決するには、== 演算子を使用して年齢などのプリミティブ データ型を比較します。変更されたコード スニペットは次のとおりです。

public boolean equals(People other){
    boolean result;
    if((other == null) || (getClass() != other.getClass())){
        result = false;
    } // end if
    else{
        People otherPeople = (People)other;
        result = name.equals(other.name) && age == other.age;
    } // end else

    return result;
} // end equals

追加の説明:

1.オーバーライド プロセス:

  • equals() をオーバーライドするには、@Override アノテーションを使用して宣言します。
  • メソッドは、同じ引数を 1 つ取り、等価性を示すブール値を返す必要があります。クラスとして入力します。

2. Null チェック:

  • NullPointerExceptions を避けるために、obj == null を使用して常に null をチェックします。

3.クラスの比較:

  • getClass() != other.getClass().

4.カスタム比較ロジック:

    else ブロック内でカスタム比較ロジックを定義します。
  • 文字列比較には equals() を使用し、プリミティブ型には == を使用します。
  • を決定するすべての関連フィールドを考慮します。 equality.

例:

提供された例では、名前と年齢の両方を比較して、Person クラスの equals() をオーバーライドします。等価:

public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final Person other = (Person) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}

結論:

equals() メソッドをオーバーライドすると、カスタム オブジェクトに対してカスタマイズされた等価比較を定義できるようになります。提供されている手順と例に注意深く従うことで、オブジェクトを特定の属性に基づいて効果的に比較できます。

以上がJavaでequals()メソッドを適切にオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。