Класс сканирования 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())
Другие вопросы по тегам