Класс сканирования Java для аннотаций с использованием Google Reflections
Я пытаюсь отсканировать поля внутри класса для моей собственной аннотации, используя отражения Google. Я не знаю почему, но результатом всегда является пустой набор.
Тестовый класс
public class AnnotationParser {
public void parse() {
String packagename = "com.security.rest.client";
final Reflections reflections = new Reflections(packagename);
Set<Field> subTypes = reflections.getFieldsAnnotatedWith(Wire.class);
for (Field field : subTypes) {
System.out.println("Class : " + field.getName());
}
}
public static void main(String[] args) {
new AnnotationParser().parse();
}
}
Аннотированный класс
public class AuthenticationClient {
@Wire
public KerberosAPI kerberosAPI;
@Wire
public KerberosSessionManager kerberosSessionManager;
}
Пользовательская аннотация
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Wire {
}
Пожалуйста, дайте мне знать, если требуется какая-либо другая информация.
1 ответ
Аннотации полей не сканируются по умолчанию. Вы должны добавить FieldAnnotationScanner в список сканеров, например:
new Reflections("com.security.rest.client", new FieldAnnotationsScanner())