我想知道 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)
才能正常工作,否则您的注释将在编译期间从类/字段/方法中删除。
关于java - Java中如何使用反射获取注解的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72301279/