IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

méthode equals() explications


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Par défaut méthode equals() explications
    J'ai copier/coller la méthode equals() de la FAQ JAVA et je ne comprends pas bien quelque chose.
    le premier "if" de la méthode vérifie si la référence des 2 objets et si elle sont égales et return true...mais le fait de retourner true nous fait sortir de la méthode il me semble
    et donc on n'a vérifié uniquement les références... quand est-il de l'objet lui même avec ses attributs etc ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    class TestClass {
        private int attribut1;
        private String attribut2;
        private boolean visible; // Attribut non-représentatif et donc ignoré
     
        @Override
        public boolean equals(Object obj) {
            // Vérification de l'égalité des références
            if (obj==this) {
                return true;
            }
     
            // Vérification du type du paramètre
            if (obj instanceof TestClass) {
                // Vérification des valeurs des attributs
                TestClass other = (TestClass) obj;
     
                // Pour les attributs de type primitif
                // on compare directement les valeurs :
                if (this.attribut1 != other.attribut1) {
                    return false; // les attributs sont différents 
                }
     
                // Pour les attributs de type objets 
                // on compare dans un premier temps les références 
                if (this.attribut2 != other.attribut2) {
                    // Si les références ne sont pas identiques
                    // on doit en plus utiliser equals()
                    if (this.attribut2 == null || !this.attribut2.equals(other.attribut2)) {
                        return false; // les attributs sont différents 
                    }
                }
     
                // Si on arrive ici c'est que tous les attributs sont égaux :
                return true;
            }
     
            return false;
        }
    }

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    Si les références sont identiques, il n'est pas effectivement pas nécessaires de comparer les attributs.
    Si les références sont identiques, c'est le même objet, on a en fait un et un seul objet.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String x = "ABCDEF";
    if(x.equals(x)) // retourne true. C'est la même référence.
    Dans l'exemple, c'est simple, dans certains cas, c'est un peu plus complexe de voir si c'est le même objet.

    J'espère avoir été à peu pres clair

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Par défaut
    ahhh ok.
    c'est au cas ou quelqu'un d'assez fou compare le même object quoi
    Merci pour ta réponse !

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    le premier "if" de la méthode vérifie si la référence des 2 objets et si elle sont égales et return true...mais le fait de retourner true nous fait sortir de la méthode il me semble
    et donc on n'a vérifié uniquement les références... quand est-il de l'objet lui même avec ses attributs etc ...
    Si on veut par exemple montrer que deux personnes sont identiques, et si on arrive à montrer qu'il s'agit en fait de la meme personne. N'attend pas repondu à la question? Puisque ces deux personnes qui sont en fait une meme personne ont forcement meme nom, meme taille, meme caractere, ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la méthode equals()
    Par slim_java dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 23/09/2009, 09h00
  2. Méthode "equals" dans une liste.
    Par c-ve dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2009, 14h39
  3. méthodes recursives explication
    Par kamimar dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/06/2008, 06h58
  4. Réponses: 0
    Dernier message: 26/11/2007, 15h47
  5. La méthode equals() de la classe String
    Par Nayila dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2007, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo