假设我有一个带有@Target({ElementType.PARAMETER})
的运行时注释@foo
。
还假设我用它来注释一个方法:
void someFunction(@foo Bar bar) {
// ...
}
我有一个实例Annotation annotation
,它对应于上面someFunction
中的注释。
是否可以使用我的实例annotation
(和反射)来确定参数bar
的类型为Bar
?
否,给定注释的实例,您无法具体确定它在注释什么。
Annotation
接口公开annotationType()
,它将允许您访问注释类型(您的)。因此,您可以使用相应的Class
来检索类型上Target
注释的值。这是你能做的最好的。
请注意,Annotation
只是一个接口。我可以像其他人一样创建它的实例。
new Annotation() {
@Override
public Class<? extends Annotation> annotationType() {
return Target.class; // whatever
}
};