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 :

[Generics] Pb avec les Wildcards lors d'un héritage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut [Generics] Pb avec les Wildcards lors d'un héritage
    Salut tout le monde,

    Alors j'ai 3 classes A, B et C avec B extends A et C extends B.

    Je veux construire des classes qui gèrent ces 3 objets, dans mon cas :
    ADao, BDao et CDao.
    A noter que les méthodes dans ADao peuvent me servir dans BDao et CDao et de même pour celles dans BDao qui peuvent me servir dans CDao
    J'ai commencé par créer ADao comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class ADao<T extends A>
    Je voulais donc créer ma classe BDao comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class BDao extendsADao<T extends B>
    Pour finir par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class CDao extendsADao<C>
    ... sauf que je ne peux pas utiliser <T extends B> dans la déclaration de BDao...

    Voilà je ne sais pas si j'ai été très clair (désolé c'est la fin de semaine) mais si j'ai raté qque chose dans le mode de fonctionnement des generics ou si qqu'un sait comment résoudre mon problème, j'attends vos réponses avec impatience!!!

    Merci d'avance

    Manu

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Je ne comprends pas. Moi j'ai écris ça, qui est équivalent à ce que tu cherches si je comprends bien, et qui passe très bien à la compilation :
    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
     
    package zou;
     
    public class GeneriqExtends 
    {
      public static class A
      {
     
      }
     
      public static class B extends A
      {
     
      }
     
      public class ADAO<T extends A>
      {
     
      }
     
      public class BDAO<T extends B> extends ADAO
      {
     
      }
    }
    Certes cela ne sert absolument à rien, mais enfin...

    Quelques conseils :

    - méfie toi comme de la peste des parallèles entre le extends des classes et le extends des génériques. Il est difficile de faire autre chose que des erreurs dans cette voie.

    - merci d'éviter les A, B, C comme nom de classe, c'est beaucoup plus difficile à lire, car une habitude (enfin, chez moi) est de réserver les noms majuscules de 1 lettre aux... types génériques. Donc quand je vois XB<T extends B>... faut que j'pense.

    - merci aussi de mettre des exemples qui au moins compilent, c'est déjà ça de gagné pour comprendre.


    Et puis... quel est ton objectif, au final ?

  3. #3
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut
    Merci!!!!



    Tout d'abord, merci pour tes conseils, j'essaierai de m'en rappeler pour mes prochains posts.

    Mon problème venait simplement du fait que j'écrivais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BDao extends ADao<T extends B>
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BDao<T extends B> extends ADao
    ... Une très bête erreur de syntaxe mais qui m'a bien fait galérer!!!

    Merci encore

    Manu

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

Discussions similaires

  1. [MySQL] Problème avec les accent lors d'une recherche dans ma base de donnée
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/06/2009, 15h08
  2. Réponses: 0
    Dernier message: 12/05/2009, 11h18
  3. Réponses: 0
    Dernier message: 25/01/2008, 10h36
  4. Réponses: 1
    Dernier message: 09/08/2006, 18h05
  5. Petit probleme avec les Border lors d'une sauvegarde
    Par Mike888 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 06/06/2006, 10h33

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