Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3819 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)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)