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

Java Discussion :

Warnings avec des generic


Sujet :

Java

  1. #1
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 909
    Points : 1 360
    Points
    1 360
    Par défaut Warnings avec des generic
    Bonjour,

    J'ai 2 problèmes avec mes génériques:

    1) J'ai trois interfaces: itMessage, itOutMessage et itTriggerMessage.
    Les 2 derniers étendent la 1ère.
    J'ai deux classes epxortant respectivement des Set<itOutMessage> et Set<itTriggerMessage>:

    objOut.ExportAll():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Set<itOutMessage> ExportAll() {
       ...
       }
    objTrigger.ExportAll() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Set<itTriggerMessage> ExportAll() {
       ...
       }
    Quand j'essaye de construire une liste avec l'ensembles des messages exportés j'ai des warnings:
    Comme code j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set<itMessage> m=new TreeSet<itMessage>()
    m.addAll(objOut.ExportAll());
    m.addAll(objTrigger.ExportAll());
    Si j'essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <T extends itMessage>Set<T> m=new TreeSet<T>()
    m.addAll(objOut.ExportAll());
    m.addAll(objTrigger.ExportAll());
    C'est pas mieux. Qu'est-ce qui cloche ?


    2) Ma classe clOutMessage implémente itOutMessage.
    J'essaye dans une collection de stocker une liste de classes implémentant itMessage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List L<Class<itMessage>>=new ArrayList<Class<itMessage>>();
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L.add(clOutMessage.class)
    J'ai une erreur, pourtant clOutMessage implémente itOutMessage qui étend itMessage. Donc clOutMessage implémente itMessage et cela devrait être ok.

    Pouvez-vous m'aider à dépatouiller tout ça ?

    Marci.

  2. #2
    Membre émérite
    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
    Points : 2 582
    Points
    2 582
    Par défaut
    J'ai écrit :
    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
     
    public class EncoreGenerique 
    {
      class Parent {}
      class Fils1 extends Parent {} 
     
      Set<Fils1> export()
      {
        return new TreeSet<Fils1>();
      }
     
      void autre()
      {
        Set<Parent> m = new TreeSet<Parent>();
        m.addAll(export());
      }
    }
    ... pas de warning chez moi.

    Il y a quelque chose que j'ai pas compris / pas vu ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    909
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 909
    Points : 1 360
    Points
    1 360
    Par défaut
    Merci pour ta réponse.

    Il doit y avoir une différence car j'avais bien des warnings mais je les ai résolus.

    J'ai fini par écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<Class<? extends itMessage>>
    au lieu de et ça marche.

    Mais je trouve étrange l'obligation de travailler avec des "Class<? extends MonInterface>" plutôt que de simples "Class<MonInterface>" ou plutôt la possibilité de travailler avec de simples "Class<MonInterface>" car il faut toujours travailler avec des implémentations des interfaces !

    Tout ça n'est pas encore 100% clair pour moi mais ça compile sans erreur ni warning et ça marche, c'est le principal.

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

Discussions similaires

  1. Rentrer des valeur generic avec des caractères joker
    Par javatar dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2010, 18h49
  2. [WinForms][.NET2.0]Bug avec des contrôles "Generic"
    Par NicolasJolet dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 17/07/2008, 10h22
  3. Réponses: 15
    Dernier message: 22/12/2006, 14h28
  4. Page html générée avec des warnings
    Par n@n¤u dans le forum Struts 1
    Réponses: 5
    Dernier message: 30/06/2006, 13h21
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

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