如何在Java中使用反射获得注释的属性?



我在java中有几个数据类,我想知道-使用反射-哪些字段具有具有特定属性的特定注释,该属性如下:

@Column(columnDefinition = "text") // Text with unbound length
private String comment;

我想如何获得字段的注释以及它是否属于Column类型:

private boolean isStringFieldWithBoundLength(Field attr) {
Annotation[] annotations = attr.getDeclaredAnnotations();
for (Annotation ann : annotations) {
Class<? extends Annotation> aClass = ann.annotationType();
if (Column.class == aClass) {

// ...

}
}
}

现在在调试器中,我可以看到aClass对象具有关于所提供参数的信息。不幸的是,我不知道如何使用代码访问它。是否可以在java中访问这些信息?

您应该能够使用

获得该注释的实例(包括您的值)
Column fieldAnnotation = attr.getAnnotation(Column.class);

如果字段没有标注@Column,则getAnnotation返回null。这意味着您不需要遍历attr.getDeclaredAnnotations();

你可以调用fieldAnnotation.columnDefinition()或者任何你的注释可能有的自定义字段。

补充:你的注释需要有@Retention(RetentionPolicy.RUNTIME)才能工作,否则你的注释将在编译期间从类/字段/方法中删除。

相关内容

  • 没有找到相关文章

最新更新