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 :

Erreur List en java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut Erreur List en java
    Bonjour,

    J'en ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public class B extends A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Map<String,List<List<A>>> map = new HashMap<String,List<List<A>>>();
    la ligne suivante présente une erreur de compilation, mais j'arrive pas à comprendre pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("courbe", new ArrayList<List<B>>());
    D'après vos compétence, pourriez vous m'expliquer pourquoi ça marche pas ???

    comment résoudre ce problème ?

    Merci d'avance...

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



    Déjà ta map est affreuse à lire : Map<String,List<List<A>>>

    Tu arrives à t'en sortir avec une telle structure ? C'est pour quoi faire exactement ?



    Sinon ton erreur est normal : une List<B> n'est pas une List<A>, et inversement...


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut
    Changer d'idée pour faire autrement ( ne pas passer par le Map, c'est possible) mais ce que je comprends pas où est l'erreur dans mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    map.put("courbe", new ArrayList<List<B>>());
    Sinon ton erreur est normal : une List<B> n'est pas une List<A>, et inversement...
    Tant que B herite de A, alors je vois pas pourquoi une List<B> n'est pas une List<A>

  4. #4
    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
    Citation Envoyé par nawara3003 Voir le message
    Tant que B herite de A, alors je vois pas pourquoi une List<B> n'est pas une List<A>
    Une List<A> ne peut contenir que des objets de type A ou de type fils.
    Une List<B> ne peut contenir que des objets de type B ou de type fils.

    Donc si tu as un type C qui étend A :
    Tu peux ajouter une instance de C dans une List<A>, mais pas dans une List<B>.

    Les types List<A> et List<B> ne sont donc pas compatibles.


    a++

    PS : Note que tu peux utiliser les wildcards pour limiter l'utilisation des Generics, et donc écrire du code un peu plus générique...

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par nawara3003 Voir le message

    Tant que B herite de A, alors je vois pas pourquoi une List<B> n'est pas une List<A>
    Par contre List<B> est aussi une List<? extends A>, donc une "solution" à ton problème serait


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Map<String,List<List<? extends A>>> map = new HashMap<String,List<List<? extends A>>>();
     
    map.put("courbe", new ArrayList<List<B>>());
    L'ennui c'est que tu pourrais faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<List<? extends A>> laListe = map.get("courbe");
    A a = laListe.get(0).get(0);
    mais que tu ne pourrais pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A a = ....;
    List<List<? extends A>> laListe = map.get("courbe");
    laListe.get(0).add(a);

Discussions similaires

  1. Débutant erreur avec import java.util.List
    Par speedyk62 dans le forum JSF
    Réponses: 7
    Dernier message: 14/07/2009, 00h24
  2. Liste chainées JAVA
    Par badmix dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 04/01/2007, 15h24
  3. ERREUR UPDATE Avec java et oracle
    Par gloglo dans le forum JDBC
    Réponses: 7
    Dernier message: 20/10/2006, 09h35
  4. Erreur de connexion : java RMI & linux
    Par pedouille dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/05/2006, 20h04
  5. Erreur appel fonction java d'une jsp
    Par itachi38 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 29/04/2006, 16h51

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