4

我正在使用 Eclipse 的 AST Parser 来解析独立的 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. 我想要的是我正在解析的文件的类的名称。是否有任何内置方法使用我可以获得此信息?

4

1 回答 1

3

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

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

我相信你应该处理你的接受过程CompilationUnit并编写visit()类的方法。

于 2013-10-31T09:02:46.827 回答