我正在尝试获取注释中指定的一个或多个值。
例如:如果@SuppressWarnings("unchecked")
是注释,我想获取值 - unchecked。
public boolean visit(SingleMemberAnnotation annotation) {
// returns the type name of the annotation - SuppressWarnings
annotation.getTypeName();
return true;
}
在 Annotation 类中没有看到任何方法来检索相同的内容。
任何帮助/指示表示赞赏
最佳答案
当您访问 SingleMemberAnnotation
时,您应该查看 SingleMemberAnnotation
类,而不是 Annotation
。 As you can see它有一个 getValue
方法,该方法返回一个Expression
。这是一种简化的情况,其中只有一个表达式,如 @SuppressWarnings("unchecked")
。
对于普通注释,您会遇到 NormalAnnotation
其中将包含一个值列表,您可以使用直观命名的方法 values()
检索这些值。
因此,由于这两种类型的注释节点在如何检索值方面有所不同,因此它们的公共(public) Annotation
基类中没有这样的方法。对于不可变节点,可以将它们视为更抽象的形式,将单个成员注释的值表示为大小为 1 的列表,但是,由于这些 AST 节点是可变的,即 NormalAnnotation.values()
返回的列表支持添加,因此无法在基类上提供。
关于java - 从注释中获取值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862943/