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 Type safety


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut warning Type safety
    j'utilise le code suivant dans ma class et j'ai l'erreur suivante:
    Type safety: The expression of type List needs unchecked conversion to conform to List<ClientInj>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List <ClientInj> client = new ArrayList<ClientInj>();
    		client= orga.getClientsInj();
    getClientInj() retourne une liste simple j'ai fais ca pour pouvoir utiliser la liste retourné comme de type clientInj car si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    orga.getClientsInj().get(1).
    ca donne rien et je peux pas accedé aux parametres de la liste car il a concidere comme une simple liste non une liste de clientInj.
    Merci de m'aider et bonne journé.

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Deux solutions s'offre à toi :
    [list][*] Si c'est possible, le plus simple est de modifier la méthode getClientInj() afin qu'elle retourne le bon type, c'est à dire List<ClientInj> à la place de List.

    [*]Sinon tu vas te retrouver à mélanger List<ClientInj> et List et le compilateur va forcément t'afficher une warning car il ne peut garantir que la List ne comporte que des objets de type ClientInj...

    Dans ce cas, et si tu es sûr que la liste retoruné ne comporte que des ClientInj, tu dois prendre toi-même la responsabilité de la cohérence des types, en indiquant au compilateur qu'il doit ignorer le warning grâce à l'annotation @SuppressWarning, mais pour éviter d'ignorer par la même occasion d'autre erreurs du même type involontairement je te conseille de faire une méthode spécifique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	@SuppressWarnings("unchecked")
    	public static List<ClientInj> toListClientInj(List list) {
    		return list;
    	}
    Que tu utiliserais comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List <ClientInj> client = toListClientInj(orga.getClientsInj());
    Ou sinon tu peux utiliser cette méthode générique qui fait la même chose pour n'importe quels types :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	@SuppressWarnings("unchecked")
    	public static <V,T extends V> T unchekedCast(V v) {
    		return (T)v;
    	}

    Mais attention : si tu "cast" comme cela un List qui ne comporte pas le bon type d'objet tu n'auras pas d'erreur dans ces méthode, mais seulement lorsque tu manipuleras ses objets (et la source du problème sera plus difficile à déceler).

    a++

    PS : Juste une remarque : Pourquoi instancies-tu une ArrayList dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List <ClientInj> client = new ArrayList<ClientInj>();
    		client= orga.getClientsInj();
    Etant donné que tu modifies la référence juste après c'est totalement inutile !!!

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Par défaut
    Salut,

    La méthode getClientsInj doit renvoyée une liste : List<ClientsInj> et non une simple List.
    Il t'affiche un warning car à la compilation il ne sait pas si la liste obtenue par getClientsInj contient des éléments ClientsInj, en effet tu pourrais renvoyer une liste de n'importe quoi.
    Si la méthode renvoie forcément une liste de ClientsInj il suffit de le spécifier dans la signature de la méthode.

    a+

    EDIT: grilled

  4. #4
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut
    ok merci ca marche merci beaucoup.

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

Discussions similaires

  1. Type safety: Unchecked cast from List to List<*>
    Par Altenide dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2011, 15h38
  2. hashmap et type safety warning
    Par dehian dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 05/11/2009, 13h49
  3. Un type safety
    Par arsenik7 dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 15h55
  4. [Comparator] Warning Type safety
    Par Pollux dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 30/01/2006, 20h43
  5. Aide sur Warning: Illegal offset type in ...
    Par pounie dans le forum Langage
    Réponses: 5
    Dernier message: 03/01/2006, 13h13

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