ArrayList générique et Polymorphisme

Résolu
tenev911 Messages postés 23 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 19 avril 2009 - 27 mai 2007 à 01:59
tenev911 Messages postés 23 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 19 avril 2009 - 27 mai 2007 à 10:58
Bonjour, je n'ai pas trouvé de sujet comme celui çi dans le moteur de recherche du forum

J'ai une ArrayList qui se présente comme ceci

(A et B sont deux classes, B étend A)

ArrayList a = new ArrayList();
A b = new B();
a.add(b);

Jusqu'ici tout va bien, B étend A donc aucun probleme, maintenant A possède une methode toString() et B reprend cette meme methode ( avec super.toString() ) en y ajoutant quelques truc en plus.

Mais voila le probleme, si je fait :
System.out.println(a.get(0))
Il me renvoie le toString() de A et non de B !

Encore pire ! Si je fait :
if(a.get(0) instanceof B)

Il ne detecte pas que a.get(0) est une instance de B !

Sachant que je ne suis pas sur s'il y a du A ou du B dans mon ArrayList, je ne peux pass faire :
System.out.println((B) a.get(0))
(Ce qui est en passant tout a fait moche vu que le polymorphisme devrait s'en occuper)

Donc ma question est : Comment faire ? Et dite moi si c'est normal ou si ca vient d'une erreur de programmation que j'aurai pu faire quelque part (Vous aurez bien deviné qu'il s'agit d'un exemple)

Merci

1 réponse

tenev911 Messages postés 23 Date d'inscription jeudi 21 juillet 2005 Statut Membre Dernière intervention 19 avril 2009
27 mai 2007 à 10:58
Mon erreur était tout autre désolé :)

Quelque part dans mon code j'avais fait :

A b = new A(b2);

b2 étant une instance de B

Forcément, si je fait A ... = new A(...), cet objet serai considéré comme un A et non comme un B.

Donc ArrayList générique et Polymorphisme marchent bien ensemble :)
3
Rejoignez-nous