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 :

Overrides de la methode "equals"


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de docv266
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 54
    Points
    54
    Par défaut Overrides de la methode "equals"
    Bonjour à tous.

    J'ai un Vecteur d'objet perso :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<MonObjet> vecteur = new Vector<MonObjet>();
    J'ai besoin de la fonction indexOf() de la classe Vector.
    J'ai donc redéfini la méthode equals de la classe "MonObjet" comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public boolean equals(Object obj)
    	{
    		System.out.println("lol");
     
    		if (this.get(1) != null || obj instanceof MonObjet)
    		{
    			MonObjet nouveauObjet = (MonObjet) obj;
    			return this.get(1).equals(nouveauObjet.get(1));
    		}
    		return false;
    	}
    Le problème : Le "lol" ne s'affiche même pas lorsque je fais un indexOf sur un vecteur contenant une liste de "MonObjet"

    Où est-ce que j'ai merdé?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    La surcharge de la méthode "equals" doit être placée dans la classe héritant de Vector :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MyVector extends Vector
    {
      public boolean equals( Object objet )
      {
        ...
      }
    }
    Et tu dois utiliser "MyVector" au lieu de "Vector".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre du Club Avatar de docv266
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 54
    Points
    54
    Par défaut
    Merci de prendre du temps pour moi!

    Alors c'est ce que j'ai fait :

    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
     
     
    import java.util.Vector;
     
    public class MonObjet extends Vector<String>
    {
    	private static final long serialVersionUID = 9159398960286620209L;
     
    	public MonObjet()
    	{
    		super();
    	}
     
    	public boolean equals(Object obj)
    	{
    		System.out.println("lol");
     
    		if (this.get(1) != null || obj instanceof MonObjet)
    		{
    			MonObjet nouveauObjet = (MonObjet) obj;
    			return this.get(1).equals(nouveauObjet.get(1));
    		}
    		return false;
    	}
    }
    Et effectivement, lorsque je créé mon vecteur "contenant", je prends soin de le remplir avec mon objet perso.

  4. #4
    Membre du Club Avatar de docv266
    Profil pro
    Inscrit en
    Août 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 85
    Points : 54
    Points
    54
    Par défaut
    Déjà, est-ce que la méthode indexOf() se sert bien de equals?

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    D'après la javadoc la méthode indexOf utilise equals mais c'est le equals de la ta classe MonObjet qu'il faut redéfinir. Il n'y a pas besoin de créer une classe héritant de Vector.

    Sinon en passant il faut éviter au possible d'utiliser la classe Vector mais utiliser plutôt la classe ArrayList (sauf cas particulier).
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

Discussions similaires

  1. passage d' l'index d'une boucle a une methode : banalisation de quote
    Par sallemel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 23/01/2012, 12h03

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