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
Libérer: 2024-12-22 18:32:09
original
800 Les gens l'ont consulté

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal