tengo una anotación personalizada llamada @Pojo que utilizo para la generación automática de documentación wiki:Java procesamiento 6 de anotación - conseguir una clase desde una anotación
package com.example.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.METHOD)
public @interface Pojo {
Class<?> value();
}
lo uso como esto:
@Pojo(com.example.restserver.model.appointment.Appointment.class)
para anotar un método de recursos para que el procesador de anotaciones pueda generar automáticamente una página wiki que describa el recurso y el tipo que espera.
Necesito leer el valor del campo value
en un procesador de anotación, pero obtengo un error de tiempo de ejecución.
En el código fuente de mi procesador Tengo las siguientes líneas:
final Pojo pojo = element.getAnnotation(Pojo.class);
// ...
final Class<?> pojoJavaClass = pojo.value();
pero la clase real en no disponible para el procesador. Creo que necesito un javax.lang.model.type.TypeMirror
en lugar de un sustituto para la clase real. No estoy seguro de cómo conseguir uno.
El error que estoy consiguiendo es:
javax.lang.model.type.MirroredTypeException: Attempt to access Class object for TypeMirror com.example.restserver.model.appointment.Appointment
El Appointment
es una clase mencionada en uno de mis @Pojo
anotación.
Desafortunadamente, el documento y/o tutoriales sobre el procesamiento de anotaciones Java parece escaso. Intenté googlear.
No muchas personas hacen este tipo de preguntas, pero para aquellos de nosotros que vivimos en el (Java) Tartarus, el apoyo de otros resulta ser muy útil – Ordiel