我正在编写自己的注释处理器,并且我正在尝试获取我的注释的参数,如下面的代码在process方法中:
roundEnv.getElementsAnnotatedWith(annotation).forEach {
val annotation = it.getAnnotation(annotation)
annotation.interfaces
}
我得到的是An exception occurred: javax.lang.model.type.MirroredTypesException: Attempt to access Class objects for TypeMirrors []
在构建期间。有谁知道如何获取注释数据?
关于getAnnotation
方法的文档解释了为什么Class<?>
对象对注释处理器有问题:
此方法返回的注释可以包含其值为Class类型的元素。此值无法直接返回:定位和加载类所需的信息(例如要使用的类加载器)不可用,并且该类可能根本不可加载。尝试通过在返回的注释上调用相关方法来读取Class对象将导致MirroredTypeException,从中可以提取相应的TypeMirror。类似地,尝试读取Class []值元素将导致MirroredTypesException。
要访问类之类的注释元素,您需要使用Element.getAnnotationMirrors()
并手动查找感兴趣的注释。这些注释镜像将包含表示实际值的元素,但不需要存在所讨论的类。