Аннотации в java и как они отображаются в памяти?

Правильно ли я понимаю, что аннотации это как маркерный класс, мета информация, и пометив класс своей аннотацией я не могу получить эти значения без рефлексии. @Retention: в каком жизненном цикле кода аннотация будет доступна (в исходнике, в class-файле или во время выполнения)

То есть есть аннотации которые обрабатываются во время компиляции, например override. А вот как понять class-файле или во время выполнения, в одном случае в память класса добавляется мета информация? И как в рантайме она появляется? Можно посоветовать хорошие статьи по теме аннотации (рефлексия).


Ответы (1 шт):

Автор решения: Aziz Umarov

Правильно ли я понимаю, что аннотации это как маркерный класс, мета информация, и пометив класс своей аннотацией я не могу получить эти значения без рефлексии.

Рефлексия в Java осуществляется с помощью Java Reflection API. ... reflexio — обращение назад) — это механизм исследования данных о программе во время её выполнения.

Так вот не все аннотации доступны в Runtime, а только которая помечена @Retention RUNTIME

Возможные типы аннотации:

  • SOURCE - аннотация доступна только в исходном коде и сбрасывается во время создания .class файла;
  • CLASS - аннотация хранится в .class файле, но недоступна во время выполнения программы;
  • RUNTIME - аннотация хранится в .class файле и доступна во время выполнения программы.
→ Ссылка