Спецификация политики удержания
Прежде чем объяснять аннотации дальше, необходимо обсудить политики удержания аннотаций (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();