Обработка аннотаций Java: возможен ли доступ к элементам неаннотированных классов?

Обработка аннотаций Java (начиная с Java 6) — очень хорошая концепция, потому что она позволяет получить доступ к большому количеству информации о классах и методах через интерфейс Element (и другие).

Но, к сожалению, мне пришлось эмпирически выяснить, что классы без аннотаций никогда не передаются пользовательскому обработчику аннотаций:

warning: No SupportedAnnotationTypes annotation found on
    my.TESTProcessor, returning an empty set.

Верны ли мои выводы? Или я могу «обмануть» компилятор, чтобы предоставить моему пользовательскому обработчику аннотаций информацию о неаннотированных классах?


person java.is.for.desktop    schedule 07.11.2010    source источник


Ответы (1)


Здорово!

Это дает мне действительно все классы, а не только аннотированные:

@SupportedAnnotationTypes("*")

Спецификация этой аннотации гласит:

[...] Finally, "*" by itself represents the set of all annotation types,
including the empty set. Note that a processor should not claim "*"
unless it is actually processing all files [...] 

Проверено, работает!

person java.is.for.desktop    schedule 07.11.2010