Как обеспечить реализацию чтения аннотаций вместе с аннотацией - PullRequest
0 голосов
/ 10 ноября 2018

Допустим, у меня есть аннотация, которая будет использоваться следующим образом:

public void foo (@IntParam int quantity, @FooParam Foo bar) {
  ...
}

Я хотел бы вызвать этот метод, получить доступ к параметрам объекта и передать его следующим образом:

public void invokeFoo (Method fooMethod, Map<String, String> context) throws ... {
  List<Object> params = Arrays.stream(fooMethod.getAnnotations()).map(annos -> {
     if (annos[0] instanceof IntParam) {
       return context.get( ... ); // <-
     } else if (annos[0] instanceof FooParam) {
       return new Foo(context); // <-
     }
  }).collect(Collectors.toList());
  fooMethod.invoke(params.toArray());
}

Проблема с этим внедрением состоит в том, что мне нужно отредактировать 2 разных файла, если я хочу добавить новые типы параметров, которых я хотел бы избежать по нескольким причинам. Есть ли способ написать эти строкив том же файле аннотации? .Единственный способ - использовать статический метод / метод по умолчанию на интерфейсе, но в любом случае это приведет к плохому типу.

Любой другой способ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...