我想开发一个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
。我该怎么办?
答案 0 :(得分: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 tutorials查看更多示例。