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 surcharge equals


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut Problème surcharge equals
    Bonjour,

    Voilà j'ai un petit souci assez frustrant. En fait, j'ai une classe abstraite "Role". Celle-ci a une fille "WebRole".
    Elles me permettent d'attribuer des droits à des profils utilisateurs sur mon projet. Un WebRole correspondant à un droit précis sur la plate-forme web du projet.

    Dans une de mes classes Action (je suis sous Struts), je récupère un Set appellé "superRoles". C'est la liste complète des WebRoles attribuables à un profil. A côté, j'ai la liste des WebRoles qui sont réellement à attribuer au profil. En toute logique, avant d'attribuer un role à un profil, je veux vérifier que le profil a bien le droit de le posséder.

    Voici mon code:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Set superRoles = superProfile.getRoles();
    Set rolesSet = new HashSet();
    Map.Entry e;
    for(Iterator i = form.getRolesListMap().entrySet().iterator(); i.hasNext();){
      e = (Map.Entry) i.next();
      if(e.getValue().equals(CHECKBOX_CHECKED)) {
        WebRole abc = new WebRole((String) e.getKey());
        if(superRoles.contains(abc)) {
          rolesSet.add(abc);
        }
      }
    }

    Dans ma classe Role, j'ai surchargé les méthodes equals et hashCode:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public boolean equals(Role pRole) {
      if(this.getName().equals(pRole.getName()))
        return true;
      return false;
    }
     
    public int hashCode() {
      return this.getName().hashCode();
    }

    Alors hormis qu'il passe dans la méthode hashCode ben il utilise pas ma méthode equals et du coup m'envoie brouter mon herbe en me refusant tous les droits.

    Pourtant le Name existe...

    Si vos lumières y voit clair...
    Merci d'avance!

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Plutot que les surcharger à la main, eclipse propose de le faire à ta place .
    Source >> Generate equals() and hashcode().

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


    C'est normal puisque une surcharge n'est pas une redéfinition !
    Pour que ta méthode soit utilisé il faut que ce soit une redéfinition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Override
    public boolean equals(Object o) {
        if (o instanceof Role) {
            Role role = (Role) o;
            if(this.getName().equals(role.getName()))
                return true;
        }
        return false;
    }
    a++

  4. #4
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Parfait
    Merci

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

Discussions similaires

  1. Problème Surcharge de constructeur
    Par Diablo64 dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2009, 16h09
  2. problème surcharge operator= C++
    Par cyberlulu dans le forum C++
    Réponses: 9
    Dernier message: 27/06/2008, 11h28
  3. probléme avec EQUALS
    Par djorfe dans le forum VB.NET
    Réponses: 4
    Dernier message: 28/03/2008, 15h42
  4. Problème surcharge comparaison
    Par skyangel dans le forum C++
    Réponses: 13
    Dernier message: 26/03/2007, 22h36
  5. problème surcharge operator+ (UNIX)
    Par richard_sraing dans le forum Linux
    Réponses: 9
    Dernier message: 01/12/2006, 20h41

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