Обработка аннотаций Java 6 - получение класса из аннотации

У меня есть специальная аннотация под названием @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 кажется мало. Пробовал погуглить.

45
задан Ralph 7 October 2011 в 13:19
поделиться