如何使用反射确定注释的目标?

时间:2015-12-04 03:54:09

标签: java reflection annotations

假设我有@foo的运行时注释@Target({ElementType.PARAMETER})

还假设我用它来注释方法:

void someFunction(@foo Bar bar) {
  // ...
}

我有一个实例Annotation annotation,对应上面someFunction中的注释。

是否仍然使用我的实例annotation(和反射)来确定参数类型bar的类型为Bar

1 个答案:

答案 0 :(得分:2)

不,鉴于您的注释实例,您无法具体确定它的注释内容。

Annotation界面公开annotationType(),您可以访问注释类型(您的)。因此,您可以在类型上使用相应的Classretrieve Target注释的值。这是你能做的最好的事情。

请注意,Annotation 只是一个界面。我可以像任何其他人一样创建它的实例。

new Annotation() {
    @Override
    public Class<? extends Annotation> annotationType() {
        return Target.class; // whatever
    }
};