Java注释:基于带注释的字段动态构建数组

时间:2014-03-11 08:47:18

标签: java java-ee java-ee-7

我必须@Override一个抽象函数并提供一个字符串数组(为我的数据表定义可搜索字段):

@Override
public String[] getQueryFields() {
    return new String[] { "email", "firstname", "lastname", "lastLogin"};
}

当我查看我的代码时,我可以想象我只是引用一个类并注释JPA列字段,例如通过 @Searchable 来表示此功能并构建我的阵列:

@Column
@Getter
@Setter
...
@Searchable
private String email;

有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

你当然可以用反射做任何你想做的事。但你也应该尝试探索其他选择。这是我刚写的一个粗略的例子。它将为您提供由@AnAnnotation注释的字段。

@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);
   }

}