Una cosa non sempre chiara è che in Java, le annotazioni vengono implementate a run-time mediante delle classi particolari che implementano l'interfaccia di annotazione. Questo significa che, a run-time, non esiste una classe del tipo specifico dell'annotazione, bensì una classe (tipicamente un proxy) costruito ad hoc per funzionare come una annotazione, ma che di fatto non è un tipo annotazione.

Questo significa che a run-time non si può operare direttamente sulla Class di una Annotation, ma occorre utilizzare il metodo getAnnotationType() della Annotation stessa. Tale metodo ritorna l'oggetto Class della annotazione così come è stata definita nel codice, e ciò consente anche di accedere alle annotazioni applicate alle annotazioni stesse.

The article Analizzare le annotazioni a runtime has been posted by Luca Ferrari on March 17, 2008