Как найти поле, которое помечено специальной аннотацией по отражению? - PullRequest
0 голосов
/ 23 июня 2019

как найти поле с аннотацией с аннотацией, если у аннотации есть значение?

например, я хочу найти поле в объекте с аннотацией

@customAnnotation( name = "field1" )
private String fileName ;

Есть ли способнайти поле (например, fileName) непосредственно по отражению (Java-отражение или библиотека отражений) и не использовать цикл и сравнение?

1 Ответ

1 голос
/ 23 июня 2019

Да, есть хорошая библиотека .

<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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...