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