Как найти тип параметра аннотированной функции - PullRequest
1 голос
/ 20 января 2010

Предположим, у меня есть функция

public int doSomething(@QueryParam("id") String name, int x){ .... }

Как мне найти тип аннотированного параметра name. У меня есть дескриптор экземпляра java.lang.reflect.Method функции doSomething и, используя функцию getParameterAnnotations(), я могу получить аннотацию @QueryParam, но не могу получить доступ к параметру, к которому она применяется. Как мне это сделать?

1 Ответ

2 голосов
/ 20 января 2010
void doSomething(@WebParam(name="paramName") int param) {  }

Method method = Test.class.getDeclaredMethod("doSomething", int.class);
Annotation[][] annotations = method.getParameterAnnotations();

for (int i = 0; i < annotations.length; i ++) {
    for (Annotation annotation : annotations[i]) {
        System.out.println(annotation);
    }
}

Это выводит:

@javax.jws.WebParam(targetNamespace=, partName=, name=paramName, 
     header=false, mode=IN)

Для объяснения - массив двумерный, потому что сначала у вас есть массив параметров, а затем для каждого параметра у вас есть массив аннотаций.

Вы можете проверить тип ожидаемой аннотации с помощью instanceof (или Class.isAssignableFrom(..).

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