我在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)
才能工作,否则你的注释将在编译期间从类/字段/方法中删除。