Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: annotation retention, runtime

Что такое retention policy аннотаций и как она влияет на их использование?

Вопрос проверяет понимание жизненного цикла аннотаций и того, кто и на каком этапе может их использовать.

Короткий ответ

Retention policy определяет, на каком этапе аннотация доступна: во время компиляции, в байткоде или в runtime. От этого зависит, может ли аннотацию читать фреймворк через reflection. Неправильный выбор retention делает аннотацию бесполезной. Большинство фреймворков требуют runtime-доступа. Поэтому retention напрямую влияет на применимость аннотации.

Длинный ответ

Retention policy определяет, как долго аннотация «живет» после компиляции.

Что такое retention policy

Retention policy — это правило, задающее этап доступности аннотации.

В Java существует три варианта:

  • SOURCE

  • CLASS

  • RUNTIME

SOURCE

Аннотация:

  • доступна только в исходном коде

  • отбрасывается компилятором

  • не попадает в .class файл

Используется для:

  • подсказок компилятору

  • статического анализа

  • документации

Пример:

@Override

CLASS

Аннотация:

  • сохраняется в байткоде

  • недоступна через reflection

  • используется инструментами на этапе сборки

Применяется редко и обычно для:

  • bytecode-инструментов

  • code generation

RUNTIME

Аннотация:

  • сохраняется в байткоде

  • доступна через reflection во время выполнения

Именно этот вариант нужен:

  • Spring

  • Hibernate

  • Jackson

Пример:

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}

Почему это важно

Если аннотация:

  • нужна фреймворку → RUNTIME

  • нужна только компилятору → SOURCE

Неправильный retention:

  • ломает функциональность

  • не дает ошибок компиляции

  • проявляется только в runtime

Вывод: retention policy определяет, кто и когда может использовать аннотацию, и напрямую влияет на ее работоспособность.

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • Java

    Java

Ключевые слова

#annotation retention

#runtime

Подпишись на Java Developer в телеграм