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
Libérer: 2024-12-23 03:39:15
original
863 Les gens l'ont consulté

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

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

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 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