当前位置: 首页 > 知识库问答 >
问题:

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

巴宏恺
2023-03-14

从这里的代码,我只想获得新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个答案

刘瑞
2023-03-14

在我寻找我问题很久之后,我从这里得到了一个答案

添加代码

@Override
public boolean visit(ClassInstanceCreation node) {
    System.out.println("ClassInstanceCreation : "+node.toString());
    return false;
}
 类似资料:
  • 我使用Eclipse JDT库解析Java源代码来访问类定义的所有方法。当代码在方法主体中包含类似“//xxxx”的注释时,解析器将在注释之前停止,并且忽略方法main(String[]args)。 这是用于解析的示例案例: 这是我为解析上述示例案例而编写的代码: 当我使用它解析代码时,它只能得到的结果是、、和方法已经被访问,而被忽略。 期待你的回答。多谢了。

  • 经过前面的学习,我们知道创建对象的标准格式如下: 类名称 对象名 = new 类名称(); 每次 new 都相当于开辟了一个新的对象,并开辟了一个新的物理内存空间。如果一个对象只需要使用唯一的一次,就可以使用匿名对象,匿名对象还可以作为实际参数传递。 匿名对象就是没有明确的给出名字的对象,是对象的一种简写形式。一般匿名对象只使用一次,而且匿名对象只在堆内存中开辟空间,而不存在栈内存的引用。 程序运

  • 本文向大家介绍详解C# 匿名对象(匿名类型)、var、动态类型 dynamic,包括了详解C# 匿名对象(匿名类型)、var、动态类型 dynamic的使用技巧和注意事项,需要的朋友参考一下 随着C#的发展,该语言内容不断丰富,开发变得更加方便快捷,C# 的锋利尽显无疑。C# 语言从诞生起就是强类型语言,这一性质到今天不曾改变,我想以后也不会变。既然是强类型语言,那编写任一程序均要求满足下面的基本

  • 我正在创建一个eclipse插件:一个使用eclipse的JDT库的重构工具。该项目的一部分是利用另一个库,这是一种流程编程语言,它要求对象是可序列化的,以便在步骤之间传递。我希望我能改变这一点,但我不能,所以我需要一种方法来使AST对象可序列化。 我的第一次尝试是定义一个实现Serializable并保存瞬态AST的代理类,并使用XStream和GSON等库来实际序列化和反序列化AST。然而,我

  • 问题内容: Java中匿名类的用途是什么?我们可以说使用匿名类是Java的优势之一吗? 问题答案: 使用某些“额外”(例如覆盖方法)创建对象的实例时,匿名内部类会变得很有用,而不必实际继承一个类。 我倾向于将它用作附加事件侦听器的快捷方式: 使用此方法可以使编码更快一些,因为我不需要创建额外的类来实现我可以实例化一个匿名内部类而无需实际创建单独的类。 我仅将这种技术用于“快速而肮脏的”任务,在这些

  • 我正在使用 JDT AST 来解析给定的源。我想找到给定对象/变量的引用,当它在使用AST时触发相关访问者时。例如:考虑以下代码: 当我解析上述代码时,当涉及到“s”的变量声明时,它将调用“VariableDeclarationFragment”类型的访问者方法。此时,在访问其余代码行之前,我想找出变量“s”的所有引用。这可能吗?我考虑使用JDT SearchEngine并在此时调用以分别解析引用