gpt4 book ai didi

java - 如何获取注解名称属性?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:52 24 4
gpt4 key购买 nike

我有一个名为 ClBranch.java 的类,如下所示:

    @Entity
@Table(name = "PROVINCE")
public class PROVINCE implements Serializable {
@Id
@Column(name="PR_CODE", length = 50)
private String provinceCode

@Column(name="PR_NAME", length = 500)
private String provinceName
......
getter-setter.
}


This is my code:
public static String getClassAnnotationValue(Class classType, Class annotationType, String attributeName) {
String value = null;

Annotation annotation = classType.getAnnotation(annotationType);
if (annotation != null) {
try {
value = (String) annotation.annotationType().getMethod(attributeName).invoke(annotation);
} catch (Exception ex) {
ex.printStackTrace();
}
}

return value;
}


String columnName = getClassAnnotationValue(PROVINCE .class, Column.class, "name");

通过这种方式,我只能得到 ColumnName 作为 PROVINCE。我无法获取 ColumnName。我该怎么做?

最佳答案

@Column 注释是在字段上定义的,而不是在类上定义的。因此,您必须从私有(private)字段查询注释值:

String columnName = getAnnotationValue(PROVINCE.class.getDeclaredField("provinceCode"), Column.class, "name");

为了能够将 Field 对象传递给您的方法,请将 classType 参数的类型从 Class 更改为 AnnotatedElement。然后你可以传递类、字段、参数或方法:

public static String getAnnotationValue(AnnotatedElement element, Class annotationType, String attributeName) {
...
}

关于java - 如何获取注解名称属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276386/

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