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

avec Java Discussion :

Imposer une methode Equals pour une recherche dans une List


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut Imposer une methode Equals pour une recherche dans une List
    Bonjour,
    J'ai 2 listes de droits ACL à comparer.
    Je fais cela :

    lppi.containsAll(defaultPermissions);

    Le problème est que containsAll utilise la methose equals d'une classe (ProjectPermissionItem) que je ne peux overrider car privée. La méthode par défaut compare tous les champs un à un et aboutit à un resultat non pertinent. J'aimerais la overrider ou dire à à contains d'utiliser ma methode equals...


    Comment faire (interface , heritage?)


    Merci

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Une classe privée, ça n'existe pas...
    Tant que ta classe n'est pas "finale" tu peux l'étendre...

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut
    Ce que je veux dire c'est que je n'ai pas acces aux source donc ce que j'ai fait c'est 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
    18
    19
    20
     
    public class C_ProjectPermissionItem extends ProjectPermissionItem {
     
    	public C_ProjectPermissionItem(int type, String grantee, Project project)
    			throws InvalidDataException, PSException {
    		super(type, grantee, project);
    		// TODO Auto-generated constructor stub
    	}
     
    	public boolean equals(C_ProjectPermissionItem cppi) throws PSException {
    		// TODO Auto-generated method stub
    		if (this.getGranteeString().compareTo(cppi.getGranteeString()) == 0
    				&& this.getPermission() == cppi.getPermission()
    				&& this.getType() == cppi.getType())
    			return true;
    		else
    			return false;
    	}
     
    }

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 193
    Points : 47
    Points
    47
    Par défaut
    Ce que je veux c'est utiliser la methode equals de classe fille qui ne sert qu'à rajouter mon equals...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par petozak
    Ce que je veux c'est utiliser la methode equals de classe fille qui ne sert qu'à rajouter mon equals...
    Et ca ne marche pas ?
    Tu ajoutes bien des C_ProjectPermissionItem dans tes listes ?

    Sinon, tu peux faire une méthode containsAll qui fait la comparaison que tu souhaites, à toi de te taper le parcours des listes.

  6. #6
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Je trouve qu'il est maladroit de redéfinir la méthode équals pour une simple comparaison ponctuelle. La méthode equals est en rapport avec une égalité générale des objets, et n'est pas là pour faciliter une comparaison entre des composantes de ces objets.

    Bien sûr, tu fais ce que tu veux ou peux...

    Pour ma part, en ce genre de cas, j'utilise d'autres pistes, comme par exemple :
    • je considère que le test d'égalité dont j'ai besoin m'indique que j'ai devant moi une autre sorte d'objet ; donc je crée une autre classe, dans laquelle la méthode equals est ce que je veux. Cette approche se justifie lorsqu'il y a plusieurs niveaux où la nouvelle classe est utile.
    • j'écris ma propre méthode de recherche ; de toutes façons, re-écrire equals, ou écrire sa propre méthode de recherche, cela revient à peu près au même.


    Des exemples à lire pour apprendre à programmer avec Java dans les tutoriels et cours de formation : http://java.developpez.com/cours/

    A+.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/07/2012, 16h02
  2. Réponses: 7
    Dernier message: 03/01/2012, 11h14
  3. recherche dans une base de donnees; copier coller via une macro
    Par yannlvr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2010, 17h58
  4. Réponses: 2
    Dernier message: 16/12/2009, 13h36
  5. Création d'un Widget pour la recherche dans une liste
    Par faxeur1986 dans le forum Java ME
    Réponses: 0
    Dernier message: 26/08/2009, 15h56

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