Аннотация — специальная синтаксическая конструкция, которая позволяет добавить метаданные в программный код. Добавл енные метаданные могут использоваться компилятором/интерпретатором и другими механизмами при работе с исходным кодом. Аннотации могут размещаться на объявлениях структур, исключений, перечислений, констант, свойств, методов, параметров и конструкторов — в зависимости от применимости конкретной аннотации.
В программном коде аннотации отмечаются специальным символом @ и указываются перед аннотируемым объектом:
Например:
@ИменованныеПараметры
метод Пример(П1: Число = 22, П2: Число, П3 = 44)
;
В примере выше аннотация @ИменованныеПараметры дает возможность указать, что метод/конструктор можно использовать только с именованной формой параметров. При попытке вызвать такой метод с позиционной формой параметров будет ошибка:
метод ВызовМетодов()
Пример(П2 = 22)
Пример(0, П2 = 22)
Пример(0, 22)
;
Аннотации могут иметь параметры. Параметры могут быть как обязательными, так и необязательными (иметь значение по умолчанию).
На типы параметров аннотаций и их значения (выражения инициализа ции) накладываются следующие ограничения:
-
Выражение, которое присваивается в качестве значения параметра, должно быть вычислимо во время компиляции. Выражение является вычислимым на этапе компиляции, если оно удовлетворяет следующим критериям:
- Литералы (включая литералы коллекций) являются вычислимыми.
- Обращения к константам модулей являются вычислимыми.
- Операции над вычислимыми являются вычислимыми, кроме следующих исключений:
- Вызовы методов и обращения к свойствам.
- Вызовы конструкторов.
- Операции сложения значения типа
Строка со значением другого типа.
Если выражение инициализации не указано, то в параметр присваивается значение по умолчанию. Если для выбранного параметра аннотации нет значения по умолчанию, то во время компиляции возникает ошибка.
Дополнительно разрешается использовать аннотации как параметры других аннотаций:
@Аннотация1(Параметр11 = @Аннотация2(Параметр21 = "ЗначениеПараметра"))
Синтаксис аннотаций с параметрами
Типы аннотаций
-
@ИменованныеПараметры — запрещает вызывать метод с позиционными аргументами (допускаются только именованные аргументы).
-
Аннотации ОбластиВидимости — определяют область видимость элемента (подробнее):
-
Аннотации Проверки — определяют необходимость проверки элемента:
-
@Устарело — помечает некоторую функциональность как устаревшую (подробнее). Аннотация может применяться к следующим элементам языка:
Информация об устаревшей функциональности отображается в панели Проблемы и во всплывающей подсказке:
