java - 从注释中获取值(value)

标签 java abstract-syntax-tree eclipse-jdt

我正在尝试获取注释中指定的一个或多个值。

例如:如果@SuppressWarnings("unchecked")是注释,我想获取值 - unchecked

public boolean visit(SingleMemberAnnotation annotation) {

    // returns the type name of the annotation - SuppressWarnings
    annotation.getTypeName();       

    return true;
}

在 Annotation 类中没有看到任何方法来检索相同的内容。
任何帮助/指示表示赞赏

最佳答案

当您访问 SingleMemberAnnotation 时,您应该查看 SingleMemberAnnotation 类,而不是 AnnotationAs you can see它有一个 getValue 方法,该方法返回一个Expression。这是一种简化的情况,其中只有一个表达式,如 @SuppressWarnings("unchecked")

对于普通注释,您会遇到 NormalAnnotation其中将包含一个值列表,您可以使用直观命名的方法 values() 检索这些值。

因此,由于这两种类型的注释节点在如何检索值方面有所不同,因此它们的公共(public) Annotation 基类中没有这样的方法。对于不可变节点,可以将它们视为更抽象的形式,将单个成员注释的值表示为大小为 1 的列表,但是,由于这些 AST 节点是可变的,即 NormalAnnotation.values() 返回的列表支持添加,因此无法在基类上提供。

关于java - 从注释中获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862943/

相关文章:

java - MyBatis MapperScannerConfigurer 从类路径扫描基础包

Java覆盖现有的类方法

java - 为什么 Java 中的 FileChannel 不是非阻塞的?

scala - 如何注入(inject)准引号数组

eclipse - 如何以编程方式使用 JDT 编译器?

java - 如何获取给定行号的所有 JDT AST 语句?

java - 在java中的线程之间共享字节数组的数组列表

Python PLY解析: definition scope

c++ - 为 C++ 获取 AST?

java - 使用 JDT 从方法开始深入访问所有方法调用