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

Collection et Stream Java Discussion :

Problème utilisation typage générique ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Problème utilisation typage générique ArrayList
    Bonjour,
    J'ai un problème avec l'utilisation des type générique avec les ArrayList.

    Voici le problème :

    je crée une ArrayList qui contient des Casses (classe que j'ai crée) (java version 1.6)

    List<Casse> tmp=new ArrayList<Casse>();

    Après j'envoie un message sur l'objet que je récupère de l'ArrayList.

    tmp.get(0).methode()
    Avec methode() défini dans la classe Casse.

    Et le compilateur me met une erreur, je ne comprends pas.
    Quand je fais un System.out.println(tmp.get(1).getClass()), il me met bien que c'est une Casse.
    Par contre, le compilateur le considère comme un objet et pas une Casse => erreur comme methode pas définie dans la classe Object.

    Où est l'erreur ?
    Parce pour l'instant, je suis obligé de caster tout mais je pense que les types génériques sont là pour éviter ça.

    Merci d'avance,

    PS : Si je n'ai pas clair, je peux mettre le code en annexe mais il y a qlq fichiers vu que toutes les classes sont imbriquées.

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Salut,

    Tu pourrais déjà nous donner l'erreur exacte que te donne le compilateur.
    Si le code de Casse est raisonnable, tu peux nous le donner également, ainsi que l'appel exact que tu fais via tmp.get(0).methode();

    On devrait ainsi pouvoir rapidement répondre à ton problème.

    Merci
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 35
    Points
    35
    Par défaut
    En general ce genre de truc vient de :
    - Soit la declaration n'est pas bonne : "List<Classe> tmp ;"
    - Soit c'est la creation effective de la liste qui ne l'est pas : "tmp = new ArrayList<Classe>();"

    Là dans ton exemple, tout a l'air bon, donc on ne sait quoi te répondre si tu ne mets pas precisement ton code ^^' Parce qu'au final, tu dois pas vraiment faire ça ... sinon ca marcherait je pense

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut code de l'erreur
    Merci d'avoir répondu si vite,
    voici une partie de mon code, je l'ai simplifié pour que se soit plus clair.
    Le problème est dans la classe grille.

    erreur à la compilation :
    Grille.java:35: cannot find symbol
    symbol : method estoccupe()
    location: class java.lang.Object
    damier.get(0).get(0).estoccupe();
    Fichiers attachés Fichiers attachés

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ton damier faut le déclarer comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<List<Casse>> damier;
    Tu n'as pas donné le message d'erreur comme je te l'ai demandé, ça serait sympa de le donner, je n'ai pas le temps d'essayer de compiler tes sources.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 35
    Points
    35
    Par défaut
    Oui il faut faire comme natha a dit, parce que tu as une liste de liste de Casse, alors que toi, tu ne lui dis que tu as une liste de liste sans preciser ce qu'elles contiennent ces dernieres :]

    Tuas tout suivi par rapport a ce que j'ai expliqué plus haut ?
    Relis bien, tu verras, ca te paraitra claire ton erreur :p

  7. #7
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci, l'erreur vient bien de là, une erreur de débutant ;-)
    La première fois j'avais essayé comme ça mais je m'étais trompé dans la déclaration.

    Encore merci pour vos réponses si pertinentes et si rapides.

    J'abuse encore de vous, mais si quelqu'un a le temps, peut-il m'expliquer pourquoi le getClass retourne bien la bonne class et que le compilateur ne veut pas appliquer une méthode sur l'objet retourné ?

    Bon week-end

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 35
    Points
    35
    Par défaut
    Parce que le compilateur lui il est bete est mechant : il se base sur le type déclaré (type statique). Si tu lui dit que c'est un Bonbon, il se dira ok bon c'est un Bonbon, je continue, et il te croira. Si c'etait pas un Bonbon lors de l'execution boom exception par contre :p

    Alors que le getClass() lui il evalue le type a l'execution (type dynamique) et lui il retourne pas ce que tu lui as dit que c'etait, il retourne ce que c'est vraiment :p

  9. #9
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Maintenant c'est clair, encore merci

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

Discussions similaires

  1. Problème avec l'utilisation des génériques
    Par Paranoid-Android dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/11/2014, 16h32
  2. [JSTL] [EL] Problème utilisation <c:out>
    Par XavierL dans le forum Taglibs
    Réponses: 7
    Dernier message: 14/08/2005, 20h12
  3. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  4. [STRUTS][TILES] Problème sur actions génériques
    Par xv-mnt dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/08/2005, 10h15
  5. [JAR]Problème utilisation manifest et jar
    Par doudine dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/01/2005, 10h21

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