обработка аннотаций внутри тела метода - PullRequest
9 голосов
/ 18 октября 2011

Я обрабатываю аннотации Java с помощью API обработки аннотаций Pluggable. Можно ли как-то обрабатывать аннотации, используемые внутри тела метода?

спасибо за помощь. Питер

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

Я думаю, я нашел решение.Как я и думал, это невозможно с нынешним javac.локальные аннотации - это просто комментарии, которые не обрабатываются подключаемым API обработки аннотаций.НО есть интересные усилия в JSR308 , обрабатывающие аннотации типов, которые поддерживают чудесные вещи в качестве параметров переменных типа, локальных переменных, проверки аннотированных типов и приведения ... и, как кажется, они будут включеныв openJDK 8. приятно

1 голос
/ 18 октября 2011

В JSR269 соответствующим интерфейсом будет javax.lang.model.element.VariableElement, который наследует getAnnotation(Class<A> annotationType) для доступа к таким аннотациям:

for (VariableElement variable : ElementFilter.fieldsIn(methods)) {
    final AnnotationType annotation = variable.getAnnotation(AnnotationType.class);
    if (annotation != null) {
        // ...
    }
}
...