编程语言
首页 > 编程语言> > AST解析器获取Java类的名称

AST解析器获取Java类的名称

作者:互联网

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

@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);
}

从上面的代码中可以看到,我能够从CompilationUnit获取包名,导入等.但是我面临的主要问题是,我无法获得班级名称.我尝试打印node.toString(),它打印整个源代码,我尝试使用node.getClass();.但它返回我的名字为CompilationUnit.我想要的是我正在解析的文件的类的名称.有没有使用我可以获得此信息的内置方法?

解决方法:

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

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

我相信您应该在CompilationUnit上执行accept流程,并为类编写visit()方法.

标签:abstract-syntax-tree,java
来源: https://codeday.me/bug/20191122/2060754.html