我如何在基本方法中实现此方法
类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足够了,您必须编写的额外代码很少。

10-07 22:39