Я нашел решение.Явное посещение узлов в списке (С accept()
, а не visit()
).Что-то вроде (для посещения суперинтерфейсов):
List<Type> superInterfaces = enumDecNode.superInterfaceTypes();
for( Type superInterface: superInterfaces)
superInterface.accept( this);
Обратите внимание, что невозможно использовать:
this.visit( superInterface);
, поскольку Type
является зонтичным абстрактным классом, для которого нет visit( Type node)
реализация существует.
Это также заставляет дочерние узлы в списке superInterfaces
посещаться, как только посещается их родительский элемент.Проблема решена.
В примечании, если вы уже обрабатываете все дочерние элементы узла с помощью этих списков, вы можете запретить посетителю повторно посещать его дочерние элементы, возвращая false.