Problème polymorphisme et sous typage [Résolu] - Java - Programmation
Marsh Posté le 17-05-2007 à 21:10:19
ReplyMarsh Posté le 17-05-2007 à 21:42:21
jbourdellon a écrit : ArrayList<I> listeDeA = new ArrayList<A> (); |
Test.java:10: incompatible types |
Marsh Posté le 17-05-2007 à 22:18:10
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 :
|
Marsh Posté le 17-05-2007 à 22:34:36
masklinn a écrit : ...dans ce cas précis il faut utiliser les "bounded wildcards"
|
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
Marsh Posté le 17-05-2007 à 16:02:07
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> (
). Problème : si je cherche à l'appliquer sur une ArrayList<A> (genre :
), 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