我有一个称为@Pojo的自定义注解,用于自动生成wiki文档:
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
Appointment
是我一个 @Pojo
注解中提到的类。
不幸的是,关于 Java 注解处理的文档和/或教程似乎很少。已经尝试了谷歌搜索。