¿Es posible leer el valor de un elemento de anotación en tiempo de compilación? Por ejemplo, si tengo la siguiente anotación definida:Anotación - Leer el valor del elemento en tiempo de compilación
public @interface State {
String stage();
}
y anotar un método en una clase, así:
public class Foo {
@State(stage = "build")
public String doSomething() {
return "doing something";
}
}
¿Cómo puedo leer el valor de la @ ¿Elemento de anotación de estado 'etapa' en tiempo de compilación, en un procesador de anotación? Tengo un procesador construido de la siguiente manera:
@SupportedAnnotationTypes(value = {"State"})
@SupportedSourceVersion(SourceVersion.RELEASE_6)
public class StageProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> elementTypes,
RoundEnvironment roundEnv) {
for (Element element : roundEnv.getRootElements()) {
// ... logic to read the value of element 'stage' from
// annotation 'State' in here.
}
return true;
}
}
Si tiene un procesador de anotaciones, puede ejecutar apt (herramienta de procesamiento de anotaciones), pero supongo que la pregunta es, ¿qué quiere decir con tiempo de compilación? ¿Quieres decir cuando el código se compila? ¿Te refieres durante el proceso de construcción? ¿Necesita ayuda para invocar apt para cierta herramienta de compilación (por ejemplo, Eclipse, Ant, Maven, etc.)? – Pace
Durante el proceso de compilación. En otras palabras, cuando se ejecutará el procesador de anotación. Además, no necesito ejecutar la herramienta apt ya que estoy usando java 6, que incluye soporte nativo para el procesamiento de anotaciones. – Joeblackdev