3

我想开发一个 Eclipse 插件来获取特定方法的所有可见变量。例如:

public class testVariable {  
    String test1;  
    Object test2;
        void method_test1(){
            int test3,test4;
        }
        void method_test2(){
            int test5,test6;
            //get variable here!!!!
        }
}

我只想得到可见的变量是:test1, test2,test5,test6在方法中method_test2。我能做些什么?

4

1 回答 1

6

实际上,JDT 可以在插件之外使用,即可以在独立的Java 应用程序中使用。

下面的代码可以返回你想要的变量:

public static void parse(char[] str) {
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setSource(str);
parser.setKind(ASTParser.K_COMPILATION_UNIT);

final CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() {

    public boolean visit(VariableDeclarationFragment var) {

        System.out.println("variable: " + var.getName());

        return false;
    }

    public boolean visit(MethodDeclaration md) {

        if (md.getName().toString().equals("method_test2")) {
            md.accept(new ASTVisitor() {
                public boolean visit(VariableDeclarationFragment fd) {
                    System.out.println("in method: " + fd);
                    return false;
                }
            });
        }
        return false;
    }
});

}

输出是:

variable: test1
variable: test2
in method: test5
in method: test6

在JDT 教程中查看更多示例。

于 2013-03-12T20:45:50.300 回答