AST解析器获取Java类的名称

AST解析器获取Java类的名称,java,abstract-syntax-tree,Java,Abstract Syntax Tree,我正在使用Eclipse的AST解析器解析一个独立的Java文件。这是我下面重写的代码,用于获取CompilationUnit(即Java文件)的详细信息: 从上面的代码中可以看到,我可以从compileationunit获取包名、导入等。但我面临的主要问题是,我无法获得该类的名称。我试过打印node.toString()它打印整个源代码,我试过打印node.getClass()但它返回的名称为编译单元。我想要的是我正在解析的文件的类的名称。是否有使用我可以获取此信息的内置方法?在Java中,编

我正在使用Eclipse的AST解析器解析一个独立的Java文件。这是我下面重写的代码,用于获取CompilationUnit(即Java文件)的详细信息:


从上面的代码中可以看到,我可以从
compileationunit
获取包名、导入等。但我面临的主要问题是,我无法获得该类的名称。我试过打印
node.toString()
它打印整个源代码,我试过打印
node.getClass()但它返回的名称为
编译单元
。我想要的是我正在解析的文件的类的名称。是否有使用我可以获取此信息的内置方法?

在Java中,编译单元不等于单个类。

例如,您可以定义多个类(使用包专用访问)。另一方面,在编译单元中并不总是有公共类(限制是您只能有一个公共类,如果有,则其名称必须与编译单元的名称相同)


我认为您应该在
编译单元上使用accept进程进行处理,并为类编写
visit()
方法。

嗨,Pradeep,收到了吗。你能告诉我你是怎么得到这个班的名字的吗。谢谢Sangeeta@Sangeeta是的,我问了这么长时间,我需要检查我的旧代码。我会让你知道的
@Override
public boolean visit(CompilationUnit node) {
    System.out.println("Compilation unit: " + node.getPackage().getName());
    System.out.println("Imports: " + node.imports());
    System.out.println("Class Name: " + ??); //How to get this?
    return super.visit(node);
}