Bonjour,
Je bloque totalement sur comment faire pour itérer sur un attribut hérité en Java. Soit deux classes, Foo
et Bar
, cette dernière héritant de la première.
Voici le code correspondant aux deux classes :
1 2 3 | abstract class Foo { protected ArrayList<Foo> children; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class Bar extends Foo { public ArrayList<Bar> getLeaves() { ArrayList<Bar> leaves = new ArrayList<>(); for (Bar child : children) { if (child.children.size() > 0) { leaves.addAll(child.getLeaves()); } else { leaves.add(child); } } return leaves; } } |
À la ligne 5, j’ai l’erreur suivante :
1 2 3 | Incompatible types. Required: Foo Found: Bar |
Je pensais que avec le métamorphisme ça ne posait pas de problème de faire ce genre de chose… Je dois sûrement tout mélanger. Or je dois forcément avoir un Bar
car j’utilise des méthodes propres à cette classe.
Comment suis-je sensé faire ce que je souhaite faire ?
Merci pour votre aide !
+0
-0