2016-05-19 2 views
0

От ExecutableType мы можем проверить типы параметров с помощью getParameterTypes(). Однако я не могу найти механизм для проверки имен параметров.Проверка имен параметров из обработчика аннотации

Я понимаю, что в < = Java 7 имена параметров не сохраняются в байт-коде. Тем не менее, я все еще ожидал бы получить доступ к именам аргументов arg0, arg1.

Если компилятор является компилятором Java 8, работающим с флагом -parameters, я бы ожидал получить исходные имена параметров из исходного кода.

Есть ли механизм, который я пропускаю? Кажется странным, что мы можем запросить это, используя API отражения, используя Parameter.getName(), если мы не можем получить эту информацию во время обработки аннотации.

ответ

0

Вместо ExecutableType используйте ExecutableElement. Из этого вы можете получить его параметры, которые должны иметь имена. Вы можете конвертировать с помощью Types.asElement.

+1

Событие с ExecutableElement имена типов всегда возвращаются как «arg0», ... – ctron

+0

Извините, поздний ответ на этот комментарий. Имена 'arg0',' arg1' и т. Д. Адресуются в вопросе - если вы строите Java 7 или ранее или Java 8 без флага '-parameters', то имена параметров не сохраняются в байт-коде , В этом случае они отображаются как 'arg0',' arg1' и т. Д. – jbunting

 Смежные вопросы

  • Нет связанных вопросов^_^