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

Langage Java Discussion :

Equals d'objets recursif


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut Equals d'objets recursif
    Bonjour,
    personne n'as jamais eu envie de faire un équals d'objets mais sur toutes les primitives recursives de l'objet ?

    Merci

  2. #2
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Les "primitives récursives d'un objet" c'est remontée la hiérarchie de parents pour ses attributs, jusqu'à ne plus tomber que sur des types primitifs finalement ?!...
    Si ça correspond : je ne vois pas l'intérêt de <<réinventer la roue>> ; les méthodes EQUALS des attributs en 1e niveau font déjà ça pour toi.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut
    Ne crois-tu pas que la methode equals vérifie l'adresse de l'objet et pas ses données... Moi je pense que c'est le cas et cela justifie ma question.

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    la méthode equals(Object) vérifie que les objets sont égaux par leur(s) attribut(s) et non par leur adresse.

    Si tu as des questions plus précises, n'hésite pas !

    Fred

  5. #5
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par Shiftane
    Ne crois-tu pas que la methode equals vérifie l'adresse de l'objet et pas ses données... Moi je pense que c'est le cas et cela justifie ma question.
    Pour une comparaison des adresses (si l'objet est le même) c'est le symbole "==" qui et retourne vrai ou faut.
    La methode equals compare les valeures des 2 objets.

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Regis.C
    Pour une comparaison des adresses (si l'objet est le même) c'est le symbole "==" qui et retourne vrai ou faut.
    La methode equals compare les valeures des 2 objets.
    Attention car l'implémentation par défaut de la méthode equals() se contente de vérifié les références des objets...

    Shiftane >> Que veux-tu exactement ?
    Si tu veux coder tes méthodes equals() facilement tu peux utiliser l'API Jakarta Commons Lang et sa classe EqualsBuilder...

    a++

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut
    Donc si j'ai deux objets différent avec les meme valeur a l'intérieur, je n'aurais pas la réponse true à la sortie de mon equals à moins de surcharger la méthode equals, c'est bien ca ?

  8. #8
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    Exactement.
    Java n'extrapole jamais un comportement fonctionnel dans le vide!
    C'est pour ça qu'on l'aime...

  9. #9
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Shiftane
    Donc si j'ai deux objets différent avec les meme valeur a l'intérieur, je n'aurais pas la réponse true à la sortie de mon equals à moins de surcharger la méthode equals, c'est bien ca ?
    En effet, c'est d'ailleurs indiqué dans la documentation de Object.equals() :
    The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).
    C'est à chaque classe de spécifier ses conditions d'égalités...

    a++

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut
    Donc si je veux comparer toute les valeurs et non les références d'un objet, ceci n'est pas possible sans surcharger dans chaque classe la méthode Equals()

  11. #11
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Shiftane
    Donc si je veux comparer toute les valeurs et non les références d'un objet, ceci n'est pas possible sans surcharger dans chaque classe la méthode Equals()
    C'est tout à fait ca.

    a++

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut
    Donc il ne serait pas complétement inutile de faire une méthode qui parse récursivement 2 objects pour comparer chacun des ces attributs wapper ou primitive ?
    Peut-être qqun y a-t-il deja penser ?

  13. #13
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Salut,

    bah, ca donnerai ca ? :
    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
     
    fonction equals (Object o)
      on cast l'objet o
      pour chaque element e de o
        si e n'est pas un type primitif
          si !e.equals(this.element)
            retourner faux
          fin si
        fin si
        si e est un type primitif
          si e!=this.element
            retourner faux
          fin si
        fin si
      fin pour
      retourner vrai
    fin fonction
    Je serai presque amené à dire que c'est une fonction equals "classique"...
    Le pseudo langage, c'est fait expres

    Bien à toi

    Fred

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Shiftane
    Donc il ne serait pas complétement inutile de faire une méthode qui parse récursivement 2 objects pour comparer chacun des ces attributs wapper ou primitive ?
    Peut-être qqun y a-t-il deja penser ?
    As-tu jeter un coup d'oeil à la classe EqualsBuilder ??? C'est exactement ce qu'elle propose...

    a++

  15. #15
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2004
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2004
    Messages : 138
    Par défaut
    Ben merci je crois que j'ai tout ce qu'il me faut...
    La classe ce forum... LOL

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

Discussions similaires

  1. ArrayList.Contains() et equals d'objets
    Par koktel_dfr dans le forum C#
    Réponses: 10
    Dernier message: 09/04/2010, 10h49
  2. Equals dans objet remote: Identity/ServerIdentity cast exception
    Par joebarthib dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/02/2007, 15h20
  3. Réponses: 5
    Dernier message: 21/09/2006, 10h30
  4. Pb Appel recursif d'objet.
    Par sebastien2222 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 18h33
  5. Réponses: 3
    Dernier message: 28/10/2005, 02h12

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