Ответ 1
Аннотации имеют различные политики хранения:
- SOURCE - не в файле класса, отброшенном компилятором (не требуется во время выполнения)
- CLASS - в файле класса, но VM может отбросить их.
- RUNTIME - доступно для отображения во время выполнения
Логика указала бы, что аннотации сохранения SOURCE не понадобятся во время выполнения, CLASS не должен, и RUNTIME должен быть доступен.
Быстрый взгляд на аннотации JSR 305 показывает, что они используют политику хранения RUNTIME (пример), что указывает мне, что эти банки действительно необходимо загрузить классы во время выполнения, чтобы удовлетворить контракт аннотации.
Но я сам этого не проверял.