Maison >Java >javaDidacticiel >Comment remplacer correctement la méthode « equals » pour la comparaison d'objets en Java ?

Comment remplacer correctement la méthode « equals » pour la comparaison d'objets en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-22 18:32:09888parcourir

How Do I Correctly Override the `equals` Method for Object Comparison in Java?

Comprendre l'égalité des objets en Java

Pour comparer l'égalité de deux objets en Java, on utilise souvent la méthode égale. Dans le scénario décrit, le but est de remplacer la méthode equals pour une classe People avec des champs name et age, pour faciliter les comparaisons entre les objets People.

L'implémentation initiale présentée utilisait la méthode equals pour le champ age, qui est de type Entier. Cependant, comme indiqué, la méthode equals est spécifiquement conçue pour comparer des objets String.

Solution : Comparaison de champs entiers

Pour comparer des champs entiers, il est recommandé d'utiliser l'opérateur == au lieu de la méthode égale. L'opérateur == compare directement les valeurs des types de données primitifs, plutôt que d'invoquer la méthode égale.

Implémentation correcte d'égalité

L'implémentation correcte de la méthode égale pour la classe People devrait être la suivante :

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

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

    final People other = (People) 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 implémentation :

  • Il vérifie d'abord si l'objet transmis est nul, une classe différente ou s'il a un champ de nom nul.
  • Si ces vérifications réussissent, il utilise l'opérateur == pour comparer les champs d'âge.
  • Il renvoie vrai si toutes les comparaisons sont évaluées à vrai, sinon fausse.

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