Maison > Java > javaDidacticiel > Comment remplacer correctement la méthode equals() en Java ?

Comment remplacer correctement la méthode equals() en Java ?

DDD
Libérer: 2024-12-20 19:00:18
original
906 Les gens l'ont consulté

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

Comment remplacer la méthode Equals() en Java

Le remplacement de la méthode Equals() est essentiel pour personnaliser le comportement de comparaison d'égalité pour des applications personnalisées. objets en Java. Voici un guide complet pour vous aider à le faire efficacement :

Le problème :

Dans l'extrait donné, vous avez rencontré une erreur en essayant de comparer les champs d'âge en utilisant des valeurs égales ( ), car il est conçu pour les objets String. Les valeurs entières nécessitent l'utilisation de l'opérateur ==.

La solution :

Pour résoudre cette erreur, utilisez l'opérateur == pour comparer les types de données primitifs tels que l'âge. L'extrait de code modifié est le suivant :

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

Explication supplémentaire :

1. Processus de substitution :

  • Pour remplacer equals(), déclarez-le avec l'annotation @Override.
  • La méthode doit renvoyer un booléen indiquant l'égalité, en prenant un argument du même tapez comme classe.

2. Vérification nulle :

  • Vérifiez toujours la valeur null en utilisant obj == null pour éviter les NullPointerExceptions.

3. Comparaison de classes :

  • Vérifiez que l'objet à comparer est de la même classe à l'aide de getClass() != other.getClass().

4. Logique de comparaison personnalisée :

  • Définissez la logique de comparaison personnalisée dans le bloc else.
  • Utilisez equals() pour les comparaisons de chaînes et == pour les types primitifs.
  • Considérez tous les champs pertinents qui déterminent égalité.

Exemple :

L'exemple fourni remplace equals() pour la classe Person, en comparant à la fois le nom et l'âge pour l'égalité :

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

Conclusion :

Remplacer la méthode equals() vous permet de définir des comparaisons d'égalité pour vos objets personnalisés. En suivant attentivement les étapes et les exemples fournis, vous pouvez comparer efficacement des objets en fonction de leurs attributs spécifiques.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal