我如何在基本方法中实现此方法
类ASTNode,以便我可以更轻松地获取不同的ASTNode行号?
例如,如果我想获得MethodDeclaration位置,则需要编写代码
@Override
public boolean visit(MethodDeclaration node) {
int lineNum = ((CompilationUnit) node.getRoot()).getLineNumber(node.getStartPosition());
return super.visit(node);
}
但是,我想要这样的位置信息
@Override
public boolean visit(MethodDeclaration node) {
int lineNum = node.getLineNumber();
return super.visit(node);
}
CompilationUnit
提供了一种用getLineNumber
实现的名为lineEndTable
的方法,而普通的ASTNode
仅具有一个名为startPosition
的字段,因此我是否有可能在抽象类lineEntTable
中获得一个ASTNode
? 最佳答案
“可能吗...?”不,像MethodDeclaration
这样的单个节点没有此信息。为了避免冗余,lineEndTable
仅存储在一个特定的节点CompilationUnit
中。既然您已经找到了解决方案,那么寻找其他解决方案就没有任何好处。该API足够了,您必须编写的额外代码很少。