Вернуться в список

Аннотации в Java. @Retention

Аннотация @Retention позволяет указать, в какой момент жизни программного кода будет доступна аннотация: только в исходном коде, в скомпилированном классе или во время выполнения программы.

Так, в примере указано, что аннотация будет доступна во время выполнения программы:

package com.seostella.annotation.def;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Mammal {
    String sound();

     int color();
}

Возможные типы аннотации:

  • SOURCE - аннотация доступна только в исходном коде и сбрасывается во время создания .class файла;
  • CLASS - аннотация хранится в .class файле, но недоступна во время выполнения программы;
  • RUNTIME - аннотация хранится в .class файле и доступна во время выполнения программы.

Все эти аннотации являются элементами перечисления java.lang.annotation.RetentionPolicy.

Немного пояснения к приведенным типам: SOURCE - этим типом стоит пользоваться если Вы хотите расширить исходный код, описанный аннотацией; CLASS - используйте этот тип если хотите добавить какие-то характеристики к классам (например, создать список классов, которые используют аннотацию) до выполнения программы; RUNTIME - является наиболее используемым типам так как видна во время выполнения кода и, соответственно, можно воспользоваться возможностями рефлексии.

Внимание! По умолчанию используется тип CLASS.

В следующей статье будет рассмотрена аннотация @Documented.

19.08.2015

    Только зарегистрированные пользователи могут оставить комментарий.
    Вернуться в список
    2017 «Инфокристалл» Сборка от 18.04.2017 03:58
    Контакты | Задать вопрос

    Карта сайта