Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1181 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU] pb de "unchecked conversion" avec generic

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] pb de "unchecked conversion" avec generic

n°1233868
TheRom_S
Posté le 28-10-2005 à 21:18:27  profilanswer
 

Salut,
voici une méthode qui implémente celle d'une classe abstraite (donc sans BufferedReader dans le prototype) :
 

Code :
  1. protected void setInput(LinkedList input) {
  2.     try {
  3.         BufferedReader br=(BufferedReader)(input.get(0));
  4.         this.input=input;
  5.     }
  6.     catch (ClassCastException e) { this.input=null; }
  7. }


la compilation avec l'option -Xlint me dit :
 


(...) warning: [unchecked] unchecked conversion
found   : java.util.LinkedList
required: java.util.LinkedList<java.io.BufferedReader>
            this.input=input;
                       ^


et même chose lorsque je faisais le cast avec :
this.input=LinkedList<BufferedReader>input;
 
est-ce vraiment grave vu que je teste le cast avant ?
et sinon, comment éliminer le warning ?
vu qu'au dela de l'utilisation la plus simple qui consiste à pas faire de class cast, j'ai du mal avec les generic
et que je ne peux pas simplement overrider avec : protected void setInput(LinkedList<BufferedReader> input) { ... }


Message édité par TheRom_S le 29-10-2005 à 08:40:33

---------------
The Rom's, à votre service
mood
Publicité
Posté le 28-10-2005 à 21:18:27  profilanswer
 

n°1233897
Chronoklaz​m
Posté le 28-10-2005 à 21:53:11  profilanswer
 

Et avec une LinkedList<? extends BufferedReader>   ?
 
PS : ta meme plus besoin de caster avec ça d'ailleurs.


Message édité par Chronoklazm le 28-10-2005 à 22:17:11

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1233976
TheRom_S
Posté le 29-10-2005 à 00:42:39  profilanswer
 

Non ma classe abstraite a besoin de garder le proto sans aucun rapport à BufferedReader
donc LinkedList et pas LinkedList<n'importe quel rapport à BufferedReader>
car une deuxième classe dérivée utilise LinkedList<org.xml.sax.InputSource>
et une troisième ???
en fait, mes sources sont tellement différentes ( crées à partir de Socket.getInputStream() ) que je me suis mis à utiliser un LinkedList pour pouvoir dériver ma classe abstraite et n'avoir qu'un problème de cast à gérer
 
d'ailleurs, si y'a moyen de virer LinkedList, je suis preneur (mais sans utiliser la classe Object come type de retour)


---------------
The Rom's, à votre service
n°1233987
TheRom_S
Posté le 29-10-2005 à 08:07:48  profilanswer
 

sinon, après quelques manipulations j'arrive à un truc superbe : une erreur de compilation qui me dit que
 


(...) incompatible types
found   : java.util.LinkedList<java.io.BufferedReader>
required: java.util.LinkedList<BufferedReader>
    protected <BufferedReader> LinkedList<BufferedReader> getInput() { return th
is.input; }
                                                                              ^


je précise que, ce qui est merveilleux, c'est que, jamais de la vie, je n'ai utilisé un BufferedReader qui ne viennes pas du package java.io, forcément :D
voila j'avais juste envie de vous faire partager ...
(ici le proto abstrait est "<T> LinkedList<T> getInput();" )


Message édité par TheRom_S le 29-10-2005 à 08:09:27

---------------
The Rom's, à votre service
n°1233990
TheRom_S
Posté le 29-10-2005 à 08:40:02  profilanswer
 

Bon c'est résolu avec :

Code :
  1. public abstract class MyAbstract<T1,T2> {
  2.     protected LinkedList<T1> input;
  3.     protected LinkedList<T2> output;
  4.     protected abstract LinkedList<T1> getInput();
  5.     protected abstract void setInput(LinkedList<T1> input);
  6.     protected abstract LinkedList<T2> getOutput();
  7.     protected abstract void setOutput(LinkedList<T2> output);
  8. }
  9. public class MyClass extends MyAbstract<BufferedReader,PrintWriter> {
  10.     protected LinkedList<BufferedReader> input;
  11.     protected LinkedList<PrintWriter> output;
  12.     protected LinkedList<BufferedReader> getInput() { return this.input; }
  13.     protected void setInput(LinkedList<BufferedReader> input) { this.input=input; }
  14.     protected LinkedList<PrintWriter> getOutput() { return this.output; }
  15.     protected void setOutput(LinkedList<PrintWriter> output) { this.output=output; }
  16. }


du coup je me demande même si j'ai vraiment besoin que mes méthodes soit abstraites ...
 
EDIT : et la réponse est non (même si je comprends toujours pas grand chose aux generics et à ce que j'ai codé, pas grave ca marche  :sarcastic: )


Message édité par TheRom_S le 29-10-2005 à 08:44:53

---------------
The Rom's, à votre service

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU] pb de "unchecked conversion" avec generic

 

Sujets relatifs
[résolu]Menus - Question de débutant[Struts] 1ere application [RESOLU]
Recherche du maximum d une liste de nombres[resolu]Algo Conversion Notation Infixe en Notation Polonaise Inverse
format de cellule excel [résolu][RESOLU] Struts iterate et options
[ PHP ][ Resolu ] Upload et verification d'un fichier binaire[Résolu][VBA] Problème de "" ...
numéro de feuille variable [Résolu]Textes dynamiques chinois/français [resolu]
Plus de sujets relatifs à : [RESOLU] pb de "unchecked conversion" avec generic


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR