【问题标题】:AST Parser get the name of Java classAST Parser 获取 Java 类的名称
【发布时间】:2013-11-10 23:56:54
【问题描述】:

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

【问题讨论】:

  • 嗨,Pradeep,你明白了吗。你能告诉我你是怎么得到班级名字的吗?谢谢!桑吉塔
  • @Sangeeta 是的,我知道了,我问了这么久,我需要检查我的旧代码。会让你知道

标签: java abstract-syntax-tree


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2023-01-30
    • 1970-01-01
    • 2016-04-10
    相关资源
    最近更新 更多