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 :

Generic et List


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 37
    Points
    37
    Par défaut Generic et List
    Bonjour,

    J'ai un petit problème avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static void adder(List<? extends ObjectX> list, ObjectX object) {
        list.add(object);
    }
    J'ai une erreur de compilation:
    The method add(capture#1-of ? extends ObjectX) in the type List<capture#1-of ? extends ObjectX> is not applicable for the arguments (ObjectX)
    J'ai cherché dans la FAQ mais je n'ai rien trouvé là dessus.
    Quelqu'un a une idée ?

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normal : tu ne peux pas modifier une liste dont tu ne connais pas précisément le type paramétré.

    Tu dois utiliser List<ObjectX> et non pas List<? extends ObjectX>

    a++

  3. #3
    Membre confirmé Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Points : 493
    Points
    493
    Par défaut
    Ces satanés génériques, ils font douter ....
    Comme le précise très bien adiGuba, qui est très au courant sur ce sujet, tu ne connais pas exactement le type des objets contenus dans ta liste.
    Si tu pouvais écrire ta méthode adder de cette manière, le code suivant aboutirai à un gros problème (on prend ObjectY extends ObjectX) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<ObjectY> liste = new ArrayList<ObjectY>();
    liste.add(new ObjectY());
    adder(liste, new ObjectX());
    On aurait réussi à mettre des ObjectX dans une liste d'ObjectY .
    Un lien vers le tuto de Sun (en plus de ceux qu'on trouve sur ce site) peut aider à mieux comprendre les génériques : http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 37
    Points
    37
    Par défaut
    Effectivement, je comprends le problème, je vais me débrouiller autrement.

    Merci beaucoup !

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

Discussions similaires

  1. Tableau generic type List et Sort()
    Par aviateur22 dans le forum C++/CLI
    Réponses: 1
    Dernier message: 07/05/2011, 20h03
  2. List Generics en Java & Reverse
    Par pomauguet dans le forum BOUML
    Réponses: 5
    Dernier message: 10/05/2007, 19h01
  3. [Generics] ajouter un élement dans une liste typée
    Par anitshka dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/02/2007, 11h04
  4. [Generics][Tableaux][Collections] Tableau liste entiers
    Par MyGoddess dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/11/2005, 12h44
  5. [generic] pb création d'une List []
    Par yoplaboom dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01

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