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

  FORUM HardWare.fr
  Programmation
  Java

  [Résolu] Problème polymorphisme et sous typage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Problème polymorphisme et sous typage

n°1561641
fhr
Posté le 17-05-2007 à 16:02:07  profilanswer
 

Bonjour,
 
voici la situation : j'ai une classe A et une classe B implémentant une interface I. Dans une autre classe, j'ai une méthode travaillant sur une ArrayList<I>  (

Code :
  1. void maMethode(ArrayList<I> liste);

). Problème : si je cherche à l'appliquer sur une ArrayList<A> (genre :

Code :
  1. ArrayList<A> listeDeA = new ArrayList<A> ();
  2. maMethode(listeDeA);

), j'ai droit à :
 

Test.java:11: maMethode(java.util.ArrayList<I> ) in Test cannot be applied to (java.util.ArrayList<A> )
                maMethode(listeDeA);
                ^


 
Pourquoi ça ne marche pas, alors que A est un sous-type de I ?


Message édité par fhr le 17-05-2007 à 22:42:30
mood
Publicité
Posté le 17-05-2007 à 16:02:07  profilanswer
 

n°1561754
jbourdello​n
Posté le 17-05-2007 à 21:10:19  profilanswer
 

ArrayList<I> listeDeA = new ArrayList<A> ();
maMethode(listeDeA);
 
????

n°1561770
fhr
Posté le 17-05-2007 à 21:42:21  profilanswer
 

jbourdellon a écrit :

ArrayList<I> listeDeA = new ArrayList<A> ();
maMethode(listeDeA);
 
????


 

Test.java:10: incompatible types
found   : java.util.ArrayList<A>
required: java.util.ArrayList<I>
                ArrayList<I> listeDeA = new ArrayList<A>();
                                        ^
1 error


Message édité par fhr le 17-05-2007 à 21:43:13
n°1561788
masklinn
í dag viðrar vel til loftárása
Posté le 17-05-2007 à 22:18:10  profilanswer
 

1. Utiliser List (une interface) plutôt que ArrayList (une classe concrète)
2. Apprendre à utiliser les generics, dans ce cas précis il faut utiliser les "bounded wildcards"
 
Au final, une signature de méthode correcte serait:

Code :
  1. void maMethode(List<? extends I> liste)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1561798
fhr
Posté le 17-05-2007 à 22:34:36  profilanswer
 

masklinn a écrit :

...dans ce cas précis il faut utiliser les "bounded wildcards"
 
Au final, une signature de méthode correcte serait:

Code :
  1. void maMethode(List<? extends I> liste)



 
Ah merci, je savais qu'on pouvait contraindre la généricité lors de la définition d'une classe, mais je connaissais pas le coup du "?". Merci beaucoup  :jap:  
 


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

  [Résolu] Problème polymorphisme et sous typage

 

Sujets relatifs
[Ocaml] lecture d'un fichier texte de > 50 Mo (resolu)Problème de couleur sous IE
[VB/TSQL/SQL-Server] Mes questions sur les Procédures stockéesProblème d'authentification pour accès à une base SQL
Labview: problème pour créer un tableauProblème CSS dynamique
Problème d'envoi de mail avec pièce jointe[RESOLU] ant build.xml LD_LIBRARY_PATH
probleme location.reload() en ajax sous IE 7Probleme OpenGl
Plus de sujets relatifs à : [Résolu] Problème polymorphisme et sous typage


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