Reflections метод getTypesAnnotatedWith() не возвращает аннотированное значение класса

Я создал пользовательскую аннотацию, как показано ниже:

@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.TYPE)
public @interface Connection {
  String protocol();
}

и у меня есть пара классов с этой аннотацией, как показано ниже:

@Connection(protocol = "p1")
public class Connection1 {
  public boolean isValidConnection(ConnectionVo connection) {
    System.out.print("p1");
  }
}

@Connection(protocol = "p2")
public class Connection2 {
  public boolean isValidConnection(ConnectionVo connection) {
    System.out.print("p2");
  }
}

У меня есть метод, который выбирает метод подключения 1 или подключения 2 isValidConnection() с использованием отражения, как показано ниже:

public void getConnectionProtocol(ConnectionVo connectionVo) throws Exception {
   Reflections reflections = new Reflections(Constants.CONNECTION_VALIDATOR_PKG);//package with Connection1 and Connection2 classes
   Set<Class<?>> connections =   reflections.getTypesAnnotatedWith(Connection.class);

   for (Class<?> connection : connections) {
      Connection request = connection.getAnnotation(Connection.class);
      System.out.print(request.protocol() == connectionVo.protocol);//connectionVo has field protocol with calues p1,p2 etc.
    }          
}

Сейчас я пытаюсь написать модульный тест для того же. Я сталкиваюсь с проблемой, когда reflections.getTypesAnnotatedWith(Connection.class) просто возвращает имена классов с аннотацией @Connection, то есть Connection 1 и Connection2. Как я могу получить значение, которое у него есть, т.е. p1 и p2.

0 ответов

Другие вопросы по тегам