如何使用JDT解析匿名对象?

时间:2017-04-24 02:35:51

标签: java abstract-syntax-tree eclipse-jdt

从此处的代码中,我只想获得new Foo();

class Foo{
    public Foo(){
    }
    public Foo(int a){
        System.out.println(a);
    }
    public void fo(){
        System.out.println(test);
    }
    public static void main(String[]args){
        Foo foo = new Foo(1);
        new Foo();
        new Foo().fo();
    }
}

我尝试使用JDT来解析我的代码,所以我的代码就像这里:

ASTParser parser = ASTParser.newParser(AST.JLS2);
parser.setSource(myCode.getText().toCharArray());
parser.setKind(ASTParser.K_COMPILATION_UNIT);
final CompilationUnit cu = (CompilationUnit) parser.createAST(null);

cu.accept(new ASTVisitor() {
    @Override
    public boolean visit(MethodInvocation node){
        System.out.println(node.toString());
    }

    @Override
    public boolean visit(ConstructorInvocation node) {
        System.out.println(node.toString());
    }

    @Override
    public boolean visit(AnonymousClassDeclaration node) {
        System.out.println(node.toString());
    }
});

但它不起作用

1 个答案:

答案 0 :(得分:0)

在我长时间搜索我的问题后,我得到了here

的答案

添加您的代码:

@Override
public boolean visit(ClassInstanceCreation node) {
    System.out.println("ClassInstanceCreation : "+node.toString());
    return false;
}