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 :

Problème comparaison objets avec equals


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Problème comparaison objets avec equals
    Bonjour
    J'ai fais un teste de la fonction equals pour comparer entre deux objets d'une même classe.
    Mon problème c'est qu'elle me retourne false pour 2 objets exactement identique.
    Voici mon code:
    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
     
    public static void main(String[] args) {
    		// TODO Raccord de méthode auto-généré
    		Voiture vt1,vt2;
    		vt1=new Voiture();
    		vt2=new Voiture();
    		vt1.setmarque("RENAULT");
    		vt1.setmatricule("a-48-3666");
    		System.out.println(vt1.getmarque());
    		System.out.println(vt1.getmatricule());
     
    		vt2.setmarque("RENAULT");
    		vt2.setmatricule("a-48-3666");
    		System.out.println(vt2.getmarque());
    		System.out.println(vt2.getmatricule());
    		if(vt1.equals(vt2))
    		{
    			System.out.println("egale");
    		}
    		else
    		{
    			System.out.println("non egale adrafat");
    		}
    	}
    Vous allez constater que les 2 objets vt1 et vt2 sont exactement identiques pourtant la fonction equals me retourne false?????
    Merci.

  2. #2
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Points : 498
    Points
    498
    Par défaut
    Salut comment as tu redéfinis la méthode equals() et hashCode() de ta class Voiture ?

  3. #3
    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,


    Et comment as-tu implémenter la méthode equals() ? Si tu ne l'as pas redéfini alors ton problème vient de là !

    Je te conseille de redéfinir hashCode() en même temps afin de rester cohérent...

    Plus d'info Pourquoi et comment redéfinir la méthode equals() ?

    a++

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Si tu ne redéfinis pas ta méthode équals par défaut c'est celle de Object, à savoir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean equals(Object obj) {
        return (this == obj);
    }
    Grosso modo deux objets sont égaux si ils ont les mêmes références, donc si ils sont identiques...

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut problème equals java
    Merci à tous le monde.
    Je ne savais pas qu'il fallait redéfinir la méthode equals pour chaque classe crée.
    Merci

  6. #6
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par belkasmi
    Merci à tous le monde.
    Je ne savais pas qu'il fallait redéfinir la méthode equals pour chaque classe crée.
    Merci
    Salut pouvez vous me indiquer comment redéfinir la méthode equals, ?

  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 amazircool
    Salut pouvez vous me indiquer comment redéfinir la méthode equals, ?
    Tout est dans la FAQ : Pourquoi et comment redéfinir la méthode equals() ?

    a++

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 151
    Points : 151
    Points
    151
    Par défaut redefinir equals
    Citation Envoyé par amazircool
    Salut pouvez vous me indiquer comment redéfinir la méthode equals, ?
    pour redéfinir la méthode equals il faut juste réecrire cette méthode dans ta classe :
    public boolean equals(Object autreobjet){ //ici tu dis comment tu veux que ton objet this soit egale à autreobjet
    }

  9. #9
    Débutant Avatar de amazircool
    Inscrit en
    Décembre 2005
    Messages
    497
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 497
    Points : 152
    Points
    152
    Par défaut
    merci.

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

Discussions similaires

  1. Tester deux objets avec equals()
    Par Danger dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 12/07/2009, 11h05
  2. Réponses: 3
    Dernier message: 03/03/2008, 10h30
  3. Réponses: 5
    Dernier message: 27/10/2007, 10h11
  4. Souci pour comparer deux objets avec equals()
    Par xillibit dans le forum Langage
    Réponses: 7
    Dernier message: 30/09/2007, 15h41
  5. Réponses: 21
    Dernier message: 04/05/2006, 11h09

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