4

我有

@ColumnMetadata(index=1)
...
@ColumnMetadata(index=2)
...
@ColumnMetadata(index=3)
...

而且我必须使用 APT 检查索引号是否唯一。我不知道该怎么做。我不懂教程,一般我在网上找资料都有问题。

这该怎么做?任何关于 APT 的教程/任何东西?

4

1 回答 1

8

您可能想要使用apt工具的继任者可插入注解 API。这是一个简短的入门教程:Java 6.0 Features Part – 2 : Pluggable Annotation Processing API

这大致是检查注释所需执行的步骤:

  1. 创建一个注释处理器,它应该扩展AbstractProcessor
  2. 定义要查找的注释,添加:
    @SupportedAnnotationTypes(value= {"full.name.of.ColumnMetadata"})
  3. 覆盖process方法。
  4. 使用RoundEnvironment参数访问源代码的元素。你需要什么元素取决于你想做什么。
    • 自上而下的方法:getRootElements提供了所有类,您可以过滤出您想要检查的特定元素。如果您想分析注释周围的代码结构,例如您的方法或属性注释所在的类,此方法很有用。
    • 自底向上方法:getElementsAnnotatedWith使用此方法仅获取带注释的元素。您可以推断元素的位置,但如果您想比较它们,可能需要跟踪您的元素(例如,通过将带注释的元素列表映射到类类型)。
  5. 循环遍历您想要的元素并获取AnnotationMirror获取并检查值。
  6. 如果要报告错误,请将提供的Messager与元素一起使用。您可以使用它在 IDE 中创建漂亮的编译器错误消息。
于 2011-12-14T20:36:16.520 回答