Java注释:基于注释字段动态构建数组
我必须@Override一个抽象函数并提供一个字符串数组(为我的datatable定义可搜索字段): 当我查看我的代码时,我可以想象我只是引用一个类并注释JPA列字段,例如通过@Searchable来表示此功能并构建我的数组:Java注释:基于注释字段动态构建数组,java,jakarta-ee,java-ee-7,Java,Jakarta Ee,Java Ee 7,我必须@Override一个抽象函数并提供一个字符串数组(为我的datatable定义可搜索字段): 当我查看我的代码时,我可以想象我只是引用一个类并注释JPA列字段,例如通过@Searchable来表示此功能并构建我的数组: @Column @Getter @Setter ... @Searchable private String email; 有没有办法解决这个问题?你当然可以通过反射做任何你想做的事情。但是你也应该尝试探索其他的选择。这是我刚刚写的一个粗略的例子。它将为您提供由@ana
@Column
@Getter
@Setter
...
@Searchable
private String email;
有没有办法解决这个问题?你当然可以通过反射做任何你想做的事情。但是你也应该尝试探索其他的选择。这是我刚刚写的一个粗略的例子。它将为您提供由
@ananotation
注释的字段
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface AnAnnotation {
}
public class AnnotExample {
@AnAnnotation
private String b;
@AnAnnotation
private String c;
public static void getAnnotatedFields(final Class clazz) {
clazz.getAnnotation(AnAnnotation.class);
final Field[] declaredFields = clazz.getDeclaredFields();
for (final Field field : declaredFields) {
final AnAnnotation annotation2 = field.getAnnotation(AnAnnotation.class);
if (annotation2 != null) {
System.out.println(field.getName());
}
}
}
public static void main(final String[] args) {
AnnotExample.getAnnotatedFields(AnnotExample.class);
}
}
你当然可以做到,尽管手写很痛苦;如果你能负担得起一个外部图书馆,看看谷歌反射。嗨,非常感谢。但“你也应该尝试探索其他选择”是什么意思?
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface AnAnnotation {
}
public class AnnotExample {
@AnAnnotation
private String b;
@AnAnnotation
private String c;
public static void getAnnotatedFields(final Class clazz) {
clazz.getAnnotation(AnAnnotation.class);
final Field[] declaredFields = clazz.getDeclaredFields();
for (final Field field : declaredFields) {
final AnAnnotation annotation2 = field.getAnnotation(AnAnnotation.class);
if (annotation2 != null) {
System.out.println(field.getName());
}
}
}
public static void main(final String[] args) {
AnnotExample.getAnnotatedFields(AnnotExample.class);
}
}