gpt4 book ai didi

java - 我可以在没有注释名称的情况下获取注释的任何值吗?

转载 作者:行者123 更新时间:2023-12-02 10:01:43 25 4
gpt4 key购买 nike

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

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

参数:

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

这是我的代码:

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

Annotation an = clazz.getAnnotation(annotationClazz);
if (an.equals(null)) {
throw new CoreError("Класс " + clazz + " не содержит аннотацию " + annotationClazz);
}
PageName pn = (PageName) an;

try {
//its working!
System.out.println(pn.value());

//not working :(
System.out.println(an.getClass().getMethod(parametersName).getDefaultValue()); //not working :(
System.out.println(an.annotationType().getDeclaredMethod(parametersName, annotationClazz).getDefaultValue());
System.out.println(pn.getClass().getMethod(parametersName).getDefaultValue());
System.out.println(pn.annotationType().getDeclaredMethod(parametersName, annotationClazz).getDefaultValue());
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}

这可能吗?

最佳答案

您的代码不断寻找默认值,但您的问题从未提及默认值是否存在。要获取提供的值,您必须调用实例上的方法。

此外,在大多数情况下,您使用的 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));
}

对于这样的类(class):

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

调用

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

将打印

testPage

关于java - 我可以在没有注释名称的情况下获取注释的任何值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com