Java 使用注释处理获取静态字段值
这听起来像是一个简单的问题,但我无法让它在Android中工作 我得到的是一个简单的带注释的字段:Java 使用注释处理获取静态字段值,java,android,annotations,apt,annotation-processing,Java,Android,Annotations,Apt,Annotation Processing,这听起来像是一个简单的问题,但我无法让它在Android中工作 我得到的是一个简单的带注释的字段: @MyAnnotation public static final String TEXT = getText(); private static final String getText(){ return "TEXT"; } 我制作了一个注释处理器来处理@MyAnnotation,但我发现使用注释处理器不可能读取字段的值。我也尝试过反射,但是反射只在运行时可用 我需要这个字段值,以
@MyAnnotation
public static final String TEXT = getText();
private static final String getText(){
return "TEXT";
}
我制作了一个注释处理器来处理@MyAnnotation
,但我发现使用注释处理器不可能读取字段的值。我也尝试过反射
,但是反射只在运行时可用
我需要这个字段值,以便基于它生成代码
是否可以使用注释处理读取字段的值?如果没有,是否有办法实现此目的?最终只能初始化一次。在这种情况下,您可以遵循以下代码。希望它能帮助你
@MyAnnotation
public static final String TEXT;
private static final String getText(){
return "TEXT";
}
公共类CompileTimeAnnotationProcessor扩展了AbstractProcessor{
...
@凌驾
公共布尔过程(SetOrry,这怎么能很好地回答我的问题?
public class CompileTimeAnnotationProcessor extends AbstractProcessor{
...
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
// Only one annotation, so just use annotations.iterator().next();
Set<? extends Element> elements = roundEnv.getElementsAnnotatedWith(annotations.iterator().next());
Set<VariableElement> fields = ElementFilter.fieldsIn(elements);
for (VariableElement field : fields) {
field.getConstantValue(); //get the value of static field?
}
return true;
}
...
}