Java ASTNode的accept()方法做什么?它如何使用ASTVisitor?

Java ASTNode的accept()方法做什么?它如何使用ASTVisitor?,java,abstract-syntax-tree,visitor,Java,Abstract Syntax Tree,Visitor,ASTNode的accept方法做什么(javadoc没有太多帮助…),何时调用visit(Expression节点)方法? 下面是我需要如何使用它的示例代码: final List<Expression> listi = new ArrayList<Expression>(); String stringi = opi.generate(entryContract, true_false_maybe); // stringi representes an express

ASTNode的
accept
方法做什么(javadoc没有太多帮助…),何时调用
visit(Expression节点)
方法? 下面是我需要如何使用它的示例代码:

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;
 }
});
final List listi=new ArrayList();
字符串stringi=opi.generate(entryContract,true\u false\u可能);
//stringi表示表达式,例如“g!=h”。
setSource(stringi.toCharArray());
unit=(compliationunit)parser.createAST(null);
ASTNode astRoot=unit.getRoot();
astRoot.accept(新ASTVisitor(){
公共布尔访问(表达式节点){
添加(节点);
返回true;
}
});

谢谢

我猜您的
表达式
类是
ASTNode
类的一个子类型,
ASTVisitor
类提供了其他访问方法(当然是空的),接受其他
ASTNode
子类作为参数

它是(也在中描述)的一个实现

ASTNode
上的
accept
方法将只调用访问者实现上的
visit
方法,将自身作为
visit
方法的参数传递