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 :

java vector et warning


Sujet :

Java

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut java vector et warning
    salut

    dans une boucle, j'ai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object obj = vec.elementAt(i);
    Vector<Object> v = (Vector<Object>) obj;

    j'obtiens ce warning

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    required: java.util.Vector<java.lang.Object>
                    Vector<Object> v = (Vector<Object>) obj;
    une idée

  2. #2
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Bonjour,

    Une chose : A utiliser les avantages de Java5, pourquoi ne pas utiliser les avantages de Java2 (les List à la place des Vectors) ?

  3. #3
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    ça ne serait pas plutôt :
    Type safety: Unchecked cast from Object to Vector<Object>

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Bonjour,
    ça ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    warning: [unchecked] unchecked cast
    found   : java.lang.Object
    required: java.util.Vector<java.lang.Object>
                    Vector<Object> v = (Vector<Object>) obj;
    1 warning

  5. #5
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    +1 pour utiliser List au lieu de Vector.

    Comment est ce que tu déclares vec ?

  6. #6
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Comment est déclaré vec?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector vec = new Vector();
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Vector<Object>> vec = new Vector<Vector<Object>>();

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Comment est déclaré vec?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector vec = new Vector();
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Vector<Object>> vec = new Vector<Vector<Object>>();
    comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Object> vec

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


    Les casts vers un type paramétré génère toujours ce type de warning, tout simplement parce que un cast n'est pas typesafe contrairement à l'objectif des Generics.

    Bref le warning te signale un danger potentiel. A toi de voir si tu peux l'ignorer (et éventuellement utiliser @SuppressWarning) mais attention en cas d'erreur cela peut provoquer des exceptions bizarres plus loin dans ton code...

    a++

  9. #9
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Suffit de déclarer vec comme la 2ième proposition de fnobb, et de ne plus passer par la variable Obj.

  10. #10
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Citation Envoyé par robert_trudel Voir le message
    comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Object> vec
    Alors le vecteur contient des types Object pas forcément des type Vector<Object>

    Le mieux est peut-être de définir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Vector<Object>> vec = new Vector<Vector<Object>>();
    tu aura alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Object> v = vec.elementAt(i);

  11. #11
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Alors le vecteur contient des types Object pas forcément des type Vector<Object>

    Le mieux est peut-être de définir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Vector<Object>> vec = new Vector<Vector<Object>>();
    tu aura alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vector<Object> v = vec.elementAt(i);
    en paramètre de la function j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector<Object> vec
    ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Vector<Object> vec = new Vector<Object>();
    test(vec);
     
    Vector<Object> v = (Vector<Object>) obj;
    test(v);

  12. #12
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Serait-il possible d'avoir un peut-plus de code ?

  13. #13
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    853
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 853
    Points : 929
    Points
    929
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Serait-il possible d'avoir un peut-plus de code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public void selectWhere(Query query){
      Vector<Object> eltsWhere = query.getChampsWhere();
      Vector<Object> vec = new Vector<Object>();
      vec.addAll(eltsWhere);
      createWherePart(vec);
    }
     
     
    public boolean createWherePart(Vector<Object> vec){
    	String op = (String) vec.elementAt(0);
            boolean ok=true;
            int i = 1;
            while (i < lg) {
                Object obj = vec.elementAt(i);
                String cname = obj.getClass().getName();
                if (cname.equalsIgnoreCase("java.util.Vector")) {
                    Vector<Object> v = (Vector<Object>) obj;
     
     
                    boolean b = createWherePart(v);
                    i++
                }else{
                	String value = (String) vec.elementAt(i + 2);
                	i=i+3;
                }
            return ok;
    }

  14. #14
    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
    Heu... je me répète mais on ne peut pas caster d'un type non-Generic vers un type Generic sans que cela ne génère un warning !

    a++

  15. #15
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Ton vecteur est bizarre car si j'ai bien compris,

    l'élément 0 est un String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String op = (String) vec.elementAt(0);
    et les autres élements sont des Vectors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Object obj = vec.elementAt(i);
    ...
    Vector<Object> v = (Vector<Object>) obj;
    ou des String
    String value = (String) vec.elementAt(i + 2);
    Je voie mal comment éviter les warning sans ajouter "@SuppressWarnings("unchecked")" au dessus de la méthode createWherePart

Discussions similaires

  1. java:vector addElement besoin aide
    Par domxaline dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 23/04/2012, 11h48
  2. java:vector list.addElement example
    Par domxaline dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 22/04/2012, 16h59
  3. Problème Classe Vector Java
    Par playmobilette dans le forum Langage
    Réponses: 9
    Dernier message: 16/11/2006, 18h58
  4. Equivalent d'un vector de Java ?
    Par GyZmoO dans le forum C
    Réponses: 12
    Dernier message: 23/06/2006, 21h40
  5. [Vector warning] unchecked call to add(E)
    Par n00bi dans le forum Langage
    Réponses: 11
    Dernier message: 16/08/2005, 12h35

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