我正在尝试创建一个注释,该注释将更改带注释字段的内容。到目前为止,这是我的注释:
@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;
}
我是注释的新手,有点迷失,所以任何想法都受到高度赞赏。
答案 0 :(得分:0)