У меня есть специальная аннотация под названием @Pojo, которую я использую для автоматического создания вики-документации:
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();
}
Я использую ее вот так :
@Pojo(com.example.restserver.model.appointment.Appointment.class)
для аннотации метода ресурса, чтобы процессор аннотации мог автоматически сгенерировать вики-страницу с описанием ресурса и типа, который он ожидает.
Мне нужно прочитать значение поля value
в процессоре аннотации, но я получаю сообщение об ошибке выполнения.
В исходном коде моего процессора есть следующие строки:
final Pojo pojo = element.getAnnotation(Pojo.class);
// ...
final Class<?> pojoJavaClass = pojo.value();
, но фактический класс не доступен процессору. Думаю, мне нужен javax.lang.model.type.TypeMirror
вместо суррогата для реального класса. Я не знаю, как его получить.
Я получаю следующую ошибку:
javax.lang.model.type.MirroredTypeException: Attempt to access Class object for TypeMirror com.example.restserver.model.appointment.Appointment
Назначение
- это класс, упомянутый в одной из моих аннотаций @Pojo
.
К сожалению, документов и / или руководств по обработке аннотаций Java кажется мало. Пробовал погуглить.