НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1286 of 1310 menu

Аннотация @Target

Аннотация @Target определяет, к каким элементам программы может быть применена пользовательская аннотация. Она принимает один или несколько значений из перечисления AnnotationTarget, которые указывают допустимые цели применения аннотации.

Импорт

import kotlin.annotation.AnnotationTarget import kotlin.annotation.Target

Синтаксис

@Target(vararg allowedTargets: AnnotationTarget) annotation class MyAnnotation

Пример

Создадим аннотацию, которая может применяться только к классам и функциям:

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION) annotation class MyAnnotation @MyAnnotation class MyClass { @MyAnnotation fun myMethod() {} }

Пример

Создадим аннотацию только для свойств класса:

@Target(AnnotationTarget.PROPERTY) annotation class PropertyInfo class User { @propertyInfo val name: String = "John" @propertyInfo var age: Int = 25 }

Пример

Использование всех возможных целей аннотации:

@Target( AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE, AnnotationTarget.TYPEALIAS ) annotation class UniversalAnnotation

Пример

Попытка применить анноцию не к тому элементу вызовет ошибку компиляции:

@Target(AnnotationTarget.CLASS) annotation class ClassOnly @ClassOnly class ValidClass {} // Ошибка компиляции: эта аннотация не может быть применена к функции // @ClassOnly // fun invalidFunction() {}

Допустимые значения AnnotationTarget

Доступные цели для аннотаций:

CLASS // Классы, объекты, интерфейсы ANNOTATION_CLASS // Аннотации PROPERTY // Свойства FIELD // Поля (переменные класса) LOCAL_VARIABLE // Локальные переменные VALUE_PARAMETER // Параметры функций CONSTRUCTOR // Конструкторы FUNCTION // Функции (не члены класса) PROPERTY_GETTER // Геттеры свойств PROPERTY_SETTER // Сеттеры свойств TYPE // Типы EXPRESSION // Выражения FILE // Файлы TYPEALIAS // Псевдонимы типов

Смотрите также

  • ключевое слово annotation,
    которое используется для объявления аннотаций
  • ключевое слово retention,
    которое определяет политику сохранения аннотации
  • ключевое слово repeatable,
    которое позволяет многократное применение аннотации
  • ключевое слово class,
    которое используется для объявления классов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить