Что делает метод accept () ASTNode и как он использует ASTVisitor? - PullRequest
3 голосов
/ 01 декабря 2010

Что делает метод accept ASTNode (Javadoc не слишком помог ...) и когда будет вызван метод visit(Expression node)?Вот пример кода того, как мне нужно его использовать:

final List<Expression> listi = new ArrayList<Expression>();
String stringi = opi.generate(entryContract, true_false_maybe);
// stringi representes an expression, for example "g!=h".
parser.setSource(stringi.toCharArray());
unit = (CompilationUnit) parser.createAST(null); 
ASTNode astRoot = unit.getRoot();
astRoot.accept(new ASTVisitor() {
 public boolean visit(Expression node) {
  listi.add(node);
  return true;
 }
});

Спасибо

1 Ответ

1 голос
/ 01 декабря 2010

Полагаю, ваш класс Expression является подтипом класса ASTNode, а класс ASTVisitor представляет другие методы посещения (которые, безусловно, будут пустыми), принимая в качестве аргумента другие подклассы ASTNode.

Это реализация шаблона проектирования посетителя GoF (также описанного в Wikipedia ).

Метод accept в ASTNode просто вызовет метод visit в реализации посетителя, передав себя в качестве параметра для метода visit.

...