РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
115 of 1163 menu

Аннотация Retention

Аннотация Retention - это мета-аннотация, которая применяется к другим аннотациям и определяет политику их удержания. Она отвечает на вопрос: на каком этапе жизненного цикла программы информация об аннотации будет доступна. В качестве параметра аннотация принимает одно значение из перечисления RetentionPolicy: SOURCE, CLASS или RUNTIME. По умолчанию используется политика CLASS.

Синтаксис

@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.CLASS) @Retention(RetentionPolicy.RUNTIME)

Пример

Давайте создадим аннотацию с политикой RUNTIME и проверим её наличие через рефлексию:

import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) @interface MyAnnotation { } @MyAnnotation public class Main { public static void main(String[] args) { boolean res = Main.class.isAnnotationPresent(MyAnnotation.class); System.out.println(res); } }

Результат выполнения кода:

true

Пример

Давайте создадим аннотацию с политикой SOURCE и попробуем найти её через рефлексию:

import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.SOURCE) @interface MySourceAnnotation { } @MySourceAnnotation public class Main { public static void main(String[] args) { boolean res = Main.class.isAnnotationPresent(MySourceAnnotation.class); System.out.println(res); } }

Результат выполнения кода:

false

Как видите, аннотация с политикой SOURCE не сохраняется в байт-коде, поэтому во время выполнения она недоступна.

Смотрите также

  • аннотация RetentionPolicy,
    которая содержит политики удержания
  • аннотация Target,
    которая указывает область применения
  • аннотация Documented,
    которая включает аннотацию в документацию
  • аннотация Inherited,
    которая позволяет наследовать аннотацию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить