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

Java Discussion :

Egalité entre objects


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Points : 37
    Points
    37
    Par défaut Egalité entre objects
    Bonjour,

    Voila, je comprends pas ce que j'obtient.
    Pour faire bref, j'ai fait un print dans mon code qui montre tout le probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    System.out.println("child ="+Integer.toHexString(child.hashCode()));
    		System.out.println("children.get(0) ="+Integer.toHexString(children.get(0).hashCode()));
    		System.out.println("children.get(1) ="+Integer.toHexString(children.get(1).hashCode()));
    		System.out.println("child.equals(children.get(0)) ? = "+child.equals(children.get(0)));
    		System.out.println("child.equals(children.get(1)) ? = "+child.equals(children.get(1)));
    et en sortie j'obtiens :

    child =ac8b37
    children.get(0) =e7ccd7
    children.get(1) =39471b
    child.equals(children.get(0)) ? = true
    child.equals(children.get(1)) ? = true

    Est-ce normal? Quelqu'un peut m'expliquer?!?
    merci d'avance

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Ton objet ne respecte pas le contrat du couple hashCode()/equals()...


    a++

  3. #3
    Membre confirmé Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Points : 576
    Points
    576
    Par défaut
    Montre ta fonction equals()

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    ouais, mais javadoc de hashcode :

    "If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result."

    Donc je pige pas...

    La méthode equals je l'hérite de object...

  5. #5
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par truc_much Voir le message
    La méthode equals je l'hérite de object...
    Donc hashcode() aussi ?

    Sans le code ni le type exact de l'objet c'est difficile de t'aider...

    a++

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Les méthodes equals et hashCode héritées de Object ne sont pas utilisables directement : c'est à vous d'en fournir une implémentation. En clair : ajoutez vos propres méthodes hashCode et equals à Child.

  7. #7
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par BugFactory Voir le message
    Les méthodes equals et hashCode héritées de Object ne sont pas utilisables directement
    Elles sont utilisables directement, mais se base sur l'égalité des instances et non pas sur l'égalité des valeurs (en clair a.equals(b) équivaut à a==b).

    Pour effectuer une vérification des valeurs des objets il faut bien sûr réimplémenter ces deux méthodes...





    a++

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 35
    Points : 37
    Points
    37
    Par défaut


    J'avais complétement oublié une surcharge de equals() qui trainait..

    Miles excuses pour la perte de temps et le topic inutile

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

Discussions similaires

  1. Egalité entre BuffuredImage
    Par ArkSeth dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 20/07/2007, 12h34
  2. Egalité entre deux champs NULL ?
    Par AyaGizmo dans le forum SQL
    Réponses: 2
    Dernier message: 08/06/2007, 11h42
  3. distinction entre "Object" et "E"
    Par seb__ dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2006, 18h35
  4. .NET C# Egalité entre 2 instances
    Par mow dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/08/2006, 09h38
  5. [C++.NET] Egalite entre datatables
    Par raboin dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 06/06/2006, 15h59

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