Спецификация политики удержания

Прежде чем объяснять аннотации дальше, необходимо обсудить политики удержания аннотаций (annotation retention policies). Политика удержания определяет, в какой точке аннотация отбрасывается. Java определяет три таких политики, которые инкапсулированы в перечислении java.lang.annotation.RetentionPolicy. Это SOURCE, CLASS и RUNTIME.

Аннотации с политикой удержания SOURCE удерживаются только в исходном файле и отбрасываются при компиляции.

Аннотации с политикой удержания CLASS сохраняются в файле . class во время компиляции. Однако они недоступны JVM во время выполнения.

Аннотации с политикой удержания RUNTIME сохраняются в файле .class во время компиляции и остаются доступными JVM во время выполнения. То есть политика RUNTIME представляет аннотации наиболее высокой степени постоянства.

Политика удержания для аннотации задается с помощью одной из встроенных аннотаций Java: @Retention. Ее общая форма показана ниже:

SRetention(политика_удержания)

Здесь политика_удержания должна быть одной из описанных ранее констант. Если для аннотации не указано никакой политики сохранения, используется CLASS.

В следующей версии МуАппо с помощью @Retention указывается политика RUNTIME. То есть МуАппо будет доступна JVM во время выполнения программы.

@Retention(RetentionPolicy.RUNTIME) @interface MyAnno {
String str() ;
int val();