如何通过反射找到带有特殊注释的注释字段?

时间:2019-06-23 10:58:43

标签: spring-boot reflection

如何在注释具有值的情况下找到带有白色注释的字段?

例如,我想在带有

注释的实体中找到一个字段
@customAnnotation( name = "field1" )
private String fileName ;

有什么方法可以直接通过反射(java反射或反射库)查找字段(例如,文件名),而不使用循环和比较吗?

1 个答案:

答案 0 :(得分:1)

是的,builtins.print很不错。

<dependency>
  <groupId>org.reflections</groupId>
  <artifactId>reflections</artifactId>
  <version>0.9.11</version>
</dependency>

在您的代码中使用如下所示的反射:

//CustomAnnotation.java

package com.test;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
    String name() default "";
}

并像这样消费:

Reflections reflections = new Reflections("com.test", new FieldAnnotationsScanner());
Set<Field> fields = reflections.getFieldsAnnotatedWith(CustomAnnotation.class);

for(Field field : fields){
  CustomAnnotation ann = field.getAnnotation(CustomAnnotation.class);
  System.out.println(ann.name());
}