Я хочу использовать шаблон посетителя для реализации дерева. Поэтому я создал основной класс Node
и другие классы, расширяющие этот класс (например, Node1
, Node2
, Node3
). В Node
у меня есть строка и ArrayList
из Nodes
, который является списком дочерних элементов этого узла. Поэтому я реализовал посетителя с 3 функциями visit(Node1 x)
, ... и в main
я хочу вызвать accept каждого узла:
SomeVisitor v = new SomeVisitor();
Node n = makeTree();
Iterator<? extends Node> it = n.children.iterator();
while(it.hasNext()) {
System.out.println(it.next().getClass());
it.next.accept(v);
}
это не работает, потому что даже если .getClass
возвращает определенный класс
Я имею в виду Узел 1, 2 или 3, и ошибка, которую я получаю, заключается в том, что it.next
является типом
узел, но у меня нет ни одного объекта узла в моем дереве, и я не реализовал
visit(Node)
просто visit(Node 1,2,3)