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 :

[Vector warning] unchecked call to add(E)


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut [Vector warning] unchecked call to add(E)
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    v = new Vector();
    v.add( new Integer(100) );

    Et la il me sort un warning :

    unchecked call to add(E) as a member of the raw type java.util.Vector;


    Quelqu'un peut m'expliquer ? parce que la méthode add de la classe Vector est :

    add(E o)
    où E est le type ... mais c'est quoi ce type E ? C'est un élément ?


    PS : je sais bien que j'aurais du utiliser les ArrayList car les Vector ne sont conservés dans le jdk 1.5 que pour assurer la compatibilité ascendante : mais le problème subsiste avec ArrayList dont la méthode add possède la même signature que celle de la classe Vector.



    Merci d'avance de vos réponses.

  2. #2
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    bonjour,

    JDK1.5 ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vector<Integer> v = new Vector<Integer>(); 
    v.add( new Integer(100) );

    bon courage.

  3. #3
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Ce warning vient d'une des nouveautés de la 1.5 : les collections génériques (je crois que ça s'appelle comme ça ...).

    En gros, maintenant tu peux définir le type des objets contenus dans tes Vector, ArrayList, etc...

    Avant, tu faisais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List list = new ArrayList();
    list.add(new TonObjet());
    TonObjet obj = (TonObjet) list.get(0);
    tandis qu'avec la 1.5, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<TonObjet> list = new ArrayList<TonObjet>();
    list.add(new TonObjet());
    TonObjet obj = list.get(0);
    En gros, avec ça, plus besoin de faire des vérifications sur le type de tes objets quand tu les "extraits" d'une liste, etc.. ! C'est vraiment le top !
    Wookai


  4. #4
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    re,

    de plus, je crois bien qu'il n'est plus nécessaire de construire les objets Integer, Double, etc

    La JVM s'en charge. Ansi, ceci devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Vector<Integer> v = new Vector<Integer>(); 
    v.add( 100 );

  5. #5
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par yann2
    JDK1.5 ??
    Oui effectivement

    Donc si j'ai bien compris, maintenant il faut typer ses vecteurs.

    Donc on ne peut plus faire un vecteur "propre" qui comprend des Integer et des Strings. Donc maintenant pour créer une JTable où l'on veut une colonne avec des Integer et une colonne avec des String on ne peut plus passer par le constructeur JTable(Vector rowData, Vector columnNames) a moins de caster notre Integer en String ?

  6. #6
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Exact, c'est l'auto-boxing. Tu peux également faire un Vector<int>() et en sortir des Integer.
    Romain Guy
    Android - Mon livre - Mon blog

  7. #7
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Si, tu peux toujours faire des vecteurs qui mixent des données de type différent, en utilisant la syntaxe C'est justement dans ce cas que le compilateur émet le warning car il est de ta responsabilité de transtyper vers le bon type lorsque tu fais des get() par exemple.

  8. #8
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Citation Envoyé par herve91
    Si, tu peux toujours faire des vecteurs qui mixent des données de type différent, en utilisant la syntaxe C'est justement dans ce cas que le compilateur émet le warning car il est de ta responsabilité de transtyper vers le bon type lorsque tu fais des get() par exemple.
    Vi c'est ce que j'appelle "pas propre" même si c'est ce que je vais utiliser dans mon programme.

    Mais à l'avenir je ferai attention à ne plus froisser mon compilateur avec les warnings et à utiliser les ArrayList ^^.

    Elle sont sympas les nouveautés du 1.5 Suffit juste de s'y mettre ^^.

  9. #9
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Donc on ne peut plus faire un vecteur "propre" qui comprend des Integer et des Strings
    ben si :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Object> v = new Vector<Object>();
    bon courage.

  10. #10
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Citation Envoyé par n00bi
    Elle sont sympas les nouveautés du 1.5 Suffit juste de s'y mettre ^^.
    C'est clair ! Dans le même ordre d'idée tu peux maintenant rendre des objets comparables seulement à certains types ! Et par la même occasion faire différentes comparaisons suivant les types...

    Il me semble qu'il y a un sujet en annonce qui décrit un peu toutes les nouveautés de la 1.5. C'est bon d'y jeter un oeil pour se faire une idée !

    [EDIT] C'est un Post-it/Article, pas une annonce ...
    Wookai


  11. #11
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Vi merci je l'avais déjà lu mais y a un peu longtemps ^^ ca fait pas de mal de le relire avec les nouveaux posts

  12. #12
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    Je vous conseille de lire l'excellent tutorial de Gilad Bracha sur les generics. C'est très poussé mais on apprend tout ce qu'il faut dedans [/url]
    Romain Guy
    Android - Mon livre - Mon blog

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

Discussions similaires

  1. Warning: Call-time pass-by-reference has been deprecated
    Par Poseidon62 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2011, 16h03
  2. warning: [unchecked] unchecked cast found
    Par zodeness dans le forum Langage
    Réponses: 5
    Dernier message: 21/05/2010, 01h58
  3. Réponses: 5
    Dernier message: 18/09/2009, 18h56
  4. Réponses: 2
    Dernier message: 25/04/2008, 10h43
  5. message d'avertissement "unchecked call"
    Par mavina dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/04/2005, 15h04

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