Maison >Java >javaDidacticiel >Comment remplacer correctement la méthode equals() en Java pour les objets avec des champs chaîne et entiers ?

Comment remplacer correctement la méthode equals() en Java pour les objets avec des champs chaîne et entiers ?

DDD
DDDoriginal
2024-12-23 03:39:15857parcourir

How to Correctly Override the equals() Method in Java for Objects with String and Integer Fields?

Remplacer la méthode Equals en Java

En Java, la méthode Equals est un outil fondamental pour comparer des objets pour l'égalité. Lorsque vous remplacez la méthode equals dans une classe personnalisée, vous pouvez définir des critères spécifiques pour déterminer si deux objets de cette classe sont équivalents.

Comprendre le problème

Considérez une Classe de personne avec des champs pour le nom et l'âge. Pour comparer deux objets Person pour vérifier leur égalité, vous pouvez remplacer la méthode equals. Cependant, si le champ d'âge est un nombre entier, vous risquez de rencontrer une erreur lorsque vous essayez de le comparer à l'aide de la méthode égale, conçue pour comparer des chaînes.

Solution

Pour résoudre ce problème, vous pouvez utiliser l'opérateur d'égalité == pour comparer des entiers. Voici un exemple de méthode égale remplacée qui gère à la fois les comparaisons de chaînes et d'entiers :

@Override
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;
}

Dans ce code modifié :

  • Nous effectuons d'abord des vérifications nulles et des vérifications de classe pour nous assurer que nous comparons deux objets Person valides.
  • Nous comparons les champs de nom en utilisant la méthode égale puisqu'ils sont chaînes.
  • Nous utilisons l'opérateur == pour comparer les champs d'âge car ce sont des nombres entiers.

Exemple d'utilisation

Voici un exemple de la façon d'utiliser la méthode égale remplacée :

public class Main {

    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("John Doe", 30));
        people.add(new Person("Jane Doe", 25));

        // Check for equality using the overridden equals method
        boolean equal = people.get(0).equals(people.get(1));
        System.out.println(equal); // Output: false
    }
}

Dans cet exemple, la méthode égale correctement détermine que deux objets Personne avec des noms et des âges différents ne sont pas égaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn