如果没有注释的名称,我可以获得注释的任何值吗?

时间:2019-04-08 10:54:28

标签: java reflection

我想写一个返回注释方法值的方法。

我尝试使用此变体,但没有成功

参数:

  • clazz-带有注释的玻璃
  • annotationClazz-我的Annotation.class
  • parametersName-方法的名称

这是我的代码:

cat

有可能吗?

1 个答案:

答案 0 :(得分:1)

您的代码一直在寻找 default 值,但是您的问题从未提及默认值是否存在。要获得提供的值,必须在实例上invoke使用该方法。

此外,在大多数情况下,您使用的getMethodgetDeclaredMethod错误。

这是一个可行的示例:

public static Object getAnnotationValue(Class clazz, Class annotationClazz, String parameterName) {

    Annotation an = clazz.getAnnotation(annotationClazz);
    System.out.println(an.annotationType().getMethod(parameterName).invoke(an));
}

所以对于像这样的类:

@PageName("testPage") //Same as @PageName(value = "testPage")
public class Example {}

通话

getAnnotationValue(Example.class, PageName.class, "value")

将打印

  

testPage