从 ActiveAnnotation 获取 Annotation 参数
Get Annotation parameter from ActiveAnnotation
我正在尝试实现参数化的 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 { }
annotatedClass.annotations
由 AnnotationReference
类型的元素组成,而不是 Class<?>
,你应该为你的 class 查找一个类型,然后用它来过滤注释,例如:
val annotation = annotatedClass.findAnnotation(ExampleAnnotation.findUpstreamType)
val value = annotation.getStringValue('value');
我正在尝试实现参数化的 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 { }
annotatedClass.annotations
由 AnnotationReference
类型的元素组成,而不是 Class<?>
,你应该为你的 class 查找一个类型,然后用它来过滤注释,例如:
val annotation = annotatedClass.findAnnotation(ExampleAnnotation.findUpstreamType)
val value = annotation.getStringValue('value');