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 :

warning: [unchecked] unchecked cast found


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut warning: [unchecked] unchecked cast found
    Salut,

    lors de la compilation de mon projet j'ai la Warning suivant que j'aimerais enlever avec votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Compiling 51 source files to C:\Users\Zode\Documents\NetBeansProjects\OACA\build\web\WEB-INF\classes
    C:\...\Documents\NetBeansProjects\OACA\src\java\com\myapp\struts\InitSuppDonnee.java:50: warning: [unchecked] unchecked cast
    found   : java.util.List
    required: java.util.ArrayList<oacabase.Unite>
                ArrayList<Unite> Lunites=(ArrayList<Unite>) list;
    le code source de l'erreur et le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     List list=session.createCriteria(Unite.class).list();
                ArrayList<Unite> Lunites= (ArrayList<Unite>) list;
    Je ne trouve pas l'erreur ici aider moi, merci

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


    Ce type de warning survient lorsqu'on tente de caster un type non-paramétré vers son équivalent paramétré. Ici List<?> vers List<Unite>...

    En fait cette conversion n'existe pas, et le compilateur ne peut pas vérifier la cohérence de l'ensemble et il indique donc un problème potentiel via ce warning.

    En clair, si la liste contient des éléments de type autre que Unite, la conversion se fera quand même sans erreur, mais pourrait entrainer d'autres erreurs inexplicables plus loin dans le code...


    Toutefois ce genre de problème est courant lorsqu'on utilise des API pre-Java 5 n'utilisant pas les Generics. Dans ce cas la seule solution est d'utiliser l'annotation @SuppressWarnings pour indiquer au compilateur qu'on prend ce problème à notre charge :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @SuppressWarnings("unchecked")
    List<Unite> list = (List<Unite>) session.createCriteria(Unite.class).list();
    Il faut bien sûr être sûr du type des données de la liste

    a++

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Merci pour votre réponse, mais après avoir appliqué la ligne de code que vous m'avais procurais les lignes en rouge sont erroné et l'erreur et de type:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    try {
                session.beginTransaction();
                @SuppressWarnings("unchecked")
                List<Unite> list = (List<Unite>) session.createCriteria(Unite.class).list();
                
                ArrayList<Unite> Lunites= (ArrayList<Unite>) list;
    
                request.setAttribute("unites",Lunites);
    
                
                list=session.createCriteria(TypeAction.class).list();
                ArrayList<TypeAction> LTypeAction=(ArrayList<TypeAction>) list;
    
                request.setAttribute("typeAs",LTypeAction);
    
                list=session.createCriteria(TypeIncident.class).list();
                ArrayList<TypeIncident> LTypeIncident=(ArrayList<TypeIncident>) list;
    
                request.setAttribute("typeIs",LTypeIncident);
    
    
                list=session.createCriteria(TypeUser.class).list();
                ArrayList<TypeUser> LTypeUser=(ArrayList<TypeUser>) list;
    
                request.setAttribute("typeUs",LTypeUser);
    
                list=session.createCriteria(Cas.class).list();
                ArrayList<Cas> LCas=(ArrayList<Cas>) list;
    
                request.setAttribute("cass",LCas);
    
    
                 } catch (Exception e) {
                e.printStackTrace();
            }
    L'erreur de la premiere ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    C:\...\NetBeansProjects\OACA\src\java\com\myapp\struts\InitSuppDonnee.java:57: warning: [unchecked] unchecked conversion
    found   : java.util.List
    required: java.util.List<oacabase.Unite>
                list=session.createCriteria(TypeAction.class).list();
    C:\...\NetBeansProjects\OACA\src\java\com\myapp\struts\InitSuppDonnee.java:58: inconvertible types
    found   : java.util.List<oacabase.Unite>
    required: java.util.ArrayList<oacabase.TypeAction>
                ArrayList<TypeAction> LTypeAction=(ArrayList<TypeAction>) list;

  4. #4
    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
    Ben tu utilises le même type pour stocker 3 listes de type différents...


    Si c'est uniquement pour stocker dans la request autant le faire directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("unites", session.createCriteria(Unite.class).list() );
    a++

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Très bonne remarque venant de ta part je ne m'étonne pas cependant je fais le CAst ?

    Comme ca ou pas ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("unites", (List<Unite>)  session.createCriteria(Unite.class).list() );

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Le cast ne sert plus à rien, puisqu'on peut mettre n'importe quel type d'objet comme attribut.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/04/2008, 10h43
  2. eviter un warning sur un cast
    Par r0d dans le forum C++
    Réponses: 19
    Dernier message: 14/06/2007, 11h53
  3. [generics] unchecked après un casting
    Par zais_ethael dans le forum Langage
    Réponses: 6
    Dernier message: 11/05/2006, 10h31
  4. [Vector warning] unchecked call to add(E)
    Par n00bi dans le forum Langage
    Réponses: 11
    Dernier message: 16/08/2005, 11h35

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