Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktSpAnRt 130 of 299 menu
◀ ▶

Срок хранения в Kotlin

Пометка может исчезнуть после компиляции, остаться в байткоде или дожить до запуска программы. Срок задаёт аннотация @Retention на типе своей метки через AnnotationRetention.

Класс AnnotationRetention.SOURCE оставляет метку только в исходнике. После компиляции в class-файле её уже нет - удобно для подсказок редактору и генерации, которые смотрят на текст кода.

Метка «только для исходника» объявляется так:

@Retention(AnnotationRetention.SOURCE) annotation class SourceOnly(val tag: String)

Класс AnnotationRetention.BINARY сохраняет пометку в байткоде, но не обязана быть видимой стандартным средствам во время выполнения. Так часто помечают служебные типы для статического анализа:

@Retention(AnnotationRetention.BINARY) annotation class BinaryTag(val tag: String)

Класс AnnotationRetention.RUNTIME оставляет метку в собранном классе до запуска JVM. Это нужно, когда внешние библиотеки или платформа позже читают пометки с уже загруженного типа. Сам урок не обращается к метке из кода программы - важен лишь выбор срока при объявлении:

@Retention(AnnotationRetention.RUNTIME) annotation class RuntimeTag(val tag: String) @RuntimeTag("demo") class Marker fun main() { println(Marker::class.simpleName) }

Объявите три типа меток с одним строковым параметром и разным @Retention: SOURCE, BINARY и RUNTIME. Повесьте каждую на свой пустой класс-заглушку.

На класс с меткой RUNTIME добавьте main, который выводит простое имя типа через ::class. Чтение полей метки из программы не требуется.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить