Страницы

Поиск по вопросам

воскресенье, 26 мая 2019 г.

Правила удержания аннотаций. SOURCE, CLASS, RUNTIME

Что обозначают правила SOURCE, CLASS и RUNTIME, инкапсулированные в перечисление java.lang.annotation.RetentionPolicy?


Ответ

Рассмотрим вопрос на примере аннотации @Override, которая указывает на переопределение метода.
Так выглядит @Override в своей реализации
@Retention(RetentionPolicy.SOURCE) public @interface Override { }
SOURCE в данном случае указывает на то, что аннотация @Override (как и другая, к которой это правило будет применимо) будет "отброшена" во время компиляции. CLASS - как другое правило, указывает, что аннотация, к которой оно будет применимо, сохранится в файле с расширением .class во время компиляции, но не будет доступна для виртуальной машины JVM во время выполнения. RUNTIME - как другое правило, указывает, что аннотация, к которой оно будет применимо, сохранится в файле с расширением .class во время компиляции, и будет доступна для виртуальной машины JVM во время выполнения.

Комментариев нет:

Отправить комментарий