2010-12-01 17 views
3

Que fait la méthode accept de ASTNode (Le javadoc n'a pas trop aidé ...) et quand la méthode visit(Expression node) sera-t-elle appelée? Voici un exemple de code de la façon dont je dois l'utiliser:Que fait la méthode accept() d'ASTNode et comment utilise-t-elle ASTVisitor?

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; 
} 
}); 

Merci

Répondre

1

Je suppose que votre Expression classe est un sous-type de la classe ASTNode, et les présenter d'autres méthodes de visite de classe ASTVisitor (qui sera certainement vide), acceptant comme argument les autres sous-classes ASTNode.

Il s'agit d'une implémentation de GoF Visitor Design Pattern (également décrite à Wikipedia).

La méthode accept sur ASTNode va simplement appeler la méthode visit sur la mise en œuvre des visiteurs, se faisant passer comme paramètre pour la méthode visit.