我正在开发一个在其中搜索特定方法的插件。现在我想显示所有在其中声明和使用的变量及其类型。我该怎么办?方法名是IMethod类型。

最佳答案

如果具有该IMethod的CompilationUnit,则可以将ASTParser用作illustrated here):

ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(compilationUnit);
parser.setSourceRange(method.getSourceRange().getOffset(), method.getSourceRange().getLength());
parser.setResolveBindings(true);
CompilationUnit cu = (CompilationUnit)parser.createAST(null);
cu.accept(new ASTMethodVisitor());


然后您可以使用ASTVisitor

cu.accept(new ASTVisitor() {
  public boolean visit(SimpleName node) {
    System.out.println(node); // print all simple names in compilation unit. in our example it would be A, i, j (class name, and then variables)
    // filter the variables here
    return true;
  }
});

07-24 09:22