我尝试实现参数化的ActiveAnnotation并尝试获取提供的注释。
@Active(ExampleProcessor)
annotation ExampleAnnotation {
val String value
}
class ExampleProcessor extends AbstractClassProcessor {
override doRegisterGlobals(ClassDeclaration annotatedClass, extension RegisterGlobalsContext context)
{
val annotation = ??
annotation.value
}
}
我做了什么
annotatedClass.annotations.filter(ExampleAnnotation).head.value
在使用它时会遗憾地导致空指针:
@ExampleAnnotation("Hello!")
class MyClass { }
答案 0 :(得分:0)
annotatedClass.annotations
由AnnotationReference
类型的元素组成,而不是Class<?>
,您应该查找类的类型,然后使用它来过滤注释,例如:
val annotation = annotatedClass.findAnnotation(ExampleAnnotation.findUpstreamType)
val value = annotation.getStringValue('value');