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 :

[debutant]resolution d'une erreur


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut [debutant]resolution d'une erreur
    Bonjour
    j'ecrit une classe qui contient une ArrayList mais qui le redefinit pour ne contenir que des instances de ma classe ImagePPM.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class ImagePPMListe {
     
    private ArrayList list = new ArrayList();
     
    public ImagePPM set(int p, ImagePPM img){
    return list.set(p,img);
    }
    }
    Quand j'effectue une compilation sue cette classe j'obtient l'erreur suivante:

    ImagePPMListe.java:46: incompatible types
    found : java.lang.Object
    required: ImagePPM
    return list.set(p,img);
    ...............^
    1 error
    Pourtant l'object passe en parametre est bien une instance de la classe ImagePPM. Alors pourquoi me dit-il que les types sont incompatible??

    merci pour toute l'aide que vous m'apporterait.
    @@@@++++

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    tu devrais regarder ce tuto ....

    il suffit de définir to ArrayList comme ça je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<ImagePPM> monArrayList = new ArrayList <ImagePPM> ();

  3. #3
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Si tu regardes la doc de l'interface List, tu vois que la méthode set renvoie un Object.

    Tu déclare ta méthode comme devant renvoyer un ImagePPM, or tu renvoies un Object.
    Tu dois utiliser un cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return (ImagePPM)list.set(p,img);
    Ou alors utiliser les générics comme le propose in.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    merci

    Du coup plus besoin de redefinir les methodes d'arraylist a celle de ma classe?
    J'utilse les methodes de la classe ArrayList mais grace a Auto-UnBoxing je n'ai pas besoin de reecrire les methode pour les adapter a la classe stocke par mon ArrayList. L'auto-unboxing permet de preciser le type contenu par l'ArrayList pour eviter de se retrouver avec d'autre type dans mon ArrayList.
    En gros c'est ca?

    Ps merci pour l'ajout des balises.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    J'ai opte pour l'utilisation des generics.

    Mais le tuto n'est pas clair sur un point

    List<String> monArrayList = new ArrayList <String> (); // création d'un ArrayList qui contient des Integer
    HashMap <String,Float> monHashMap = new HashMap(); // création d'un HashMap dont les clés sont des String et les valeurs sont des Float
    Ici le <String> est apres ArrayList. or un peu plus loin on a:

    List<Integer> monArrayList=new <Integer>ArrayList();
    et le <Integer> est avant le ArrayList. Ces deux formes sont compatibles entre elles?

    dans mon application cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<ImagePPM> listPPM = new ArrayList <ImagePPM> ();
    Mais j'ai droit a ce message d'erreur:

    Modele.java:21: <identifier> expected
    List<ImagePPM> listPPM = new ArrayList <ImagePPM> ();
    ^
    1 error

    ----jGRASP wedge2: exit code for process is 1.
    Ce message est le meme pour les deux formes d'ecritures.
    cela me laisse perplexe, je ne comprends pas cette erreur.
    peut on me l'expliquer?

    Merci

  6. #6
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    salut,

    euh, faut pas tout confondre.

    Grace aux generics, tu peux typer ta collection.
    L'auto-(un)boxing ne concerne que les types primitifs.

    en typant ta collection comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<ImagePPM> monArrayList = new ArrayList <ImagePPM> ();
    Tu dis au compilateur que ta liste ne contiendra que des ImagePPM, donc set renverra un ImagePPM. Exit les casts comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (ImagePPM)monArrayList.set(p,img);
    Voilà voilà !

    Fred

    edit : Java 1.5 uniquement, verifie ta version ^^

  7. #7
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    pour ce qui est de la notation, elles sont compatibles, tout dépend du programmeur en fait. Je m'étais demandé comment gérer quelle notation et Lionel Roux met une notation dans son tuto, Eric une autre, c'est au choix je pense.

    Bien à vous

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 25
    Par défaut
    Merci beaucoup
    maintenant tout marche correctement.
    Eh oui j'avais jre5 mais jsk 1.4
    Toujours aussi chiant ces differentes versions.
    Une derniere question:

    je compile mon code avec jsk5. Est ce que si j'execute mon prog sur jre<5, il fonctionne?



    @++

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par Bigstef
    Merci beaucoup
    maintenant tout marche correctement.
    Eh oui j'avais jre5 mais jsk 1.4
    Toujours aussi chiant ces differentes versions.
    Une derniere question:

    je compile mon code avec jsk5. Est ce que si j'execute mon prog sur jre<5, il fonctionne?



    @++
    Il ne vas pas compiler si tu emploie les nouveautés de Tiger, par exemple les generics.

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

Discussions similaires

  1. [Debutant]Une erreur dans une fonction
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/10/2006, 11h55
  2. [VB6] Source D'une erreur
    Par krest dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/07/2003, 17h33
  3. (Debutant) resolution et fps
    Par silverdelph dans le forum DirectX
    Réponses: 4
    Dernier message: 12/07/2003, 12h50
  4. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 17h16
  5. Ne pas formater une erreur
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/03/2003, 14h13

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