Я работаю с обработкой аннотации Java 6, то есть тем, что можно найти в javax.annotation.processing (а не в Java 5 APT).
Интересно, какова концептуальная разница между различными классами Element, Type и Mirror. Поскольку я действительно не понимаю этого, трудно эффективно программировать обработчик аннотации. Существуют различные методы, которые "конвертируют" между этими понятиями, но я не совсем уверен, что я делаю при их использовании.
Так, например, позвольте мне иметь экземпляр AnnotationMirror.
Когда я вызываю getAnnotationType(), я получаю экземпляр DeclaredType (который по какой-либо причине реализует TypeMirror).
Тогда я могу называть asElement() на этом и получить экземпляр Element.
Что случилось?