Аннотации в java и как они отображаются в памяти?
Правильно ли я понимаю, что аннотации это как маркерный класс, мета информация, и пометив класс своей аннотацией я не могу получить эти значения без рефлексии. @Retention: в каком жизненном цикле кода аннотация будет доступна (в исходнике, в class-файле или во время выполнения)
То есть есть аннотации которые обрабатываются во время компиляции, например override. А вот как понять class-файле или во время выполнения, в одном случае в память класса добавляется мета информация? И как в рантайме она появляется? Можно посоветовать хорошие статьи по теме аннотации (рефлексия).
Ответы (1 шт):
Правильно ли я понимаю, что аннотации это как маркерный класс, мета информация, и пометив класс своей аннотацией я не могу получить эти значения без рефлексии.
Рефлексия в Java осуществляется с помощью Java Reflection API. ... reflexio — обращение назад) — это механизм исследования данных о программе во время её выполнения.
Так вот не все аннотации доступны в Runtime, а только которая помечена @Retention RUNTIME
Возможные типы аннотации:
- SOURCE - аннотация доступна только в исходном коде и сбрасывается во время создания .class файла;
- CLASS - аннотация хранится в .class файле, но недоступна во время выполнения программы;
- RUNTIME - аннотация хранится в .class файле и доступна во время выполнения программы.