注释处理 - 如何访问(和修改)字段的内容

时间:2017-01-05 15:20:39

标签: java annotations annotation-processing

我正在尝试创建一个注释,该注释将更改带注释字段的内容。到目前为止,这是我的注释:

@Retention(RetentionPolicy.CLASS)
@Target(ElementType.FIELD)
public @interface MyAnnotation {
  String value();
}

我想像这样使用它

public class MyClass {
  @MyAnnotation("test")
  String myField;
}

然后我想在编译时将myField的值设置为“test”。我只是不知道如何从我的注释处理器访问带注释的字段,以及是否有可能在编译时更改其内容。这就是我的注释处理器现在的样子:

public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
  annotations.stream().flatMap(a -> roundEnv.getElementsAnnotatedWith(a).stream())
    .forEach(e -> {
      if (!String.class.getName().equals(((VariableElement) e).asType().toString())) {
        out.printMessage(Kind.ERROR
          , "@MyAnnotation annotation can only be applied to Strings", e);
      }
      else {
        // what to do here?
      }
  });
  return true;
}

我是注释的新手,有点迷失,所以任何想法都受到高度赞赏。

1 个答案:

答案 0 :(得分:0)