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