Удаляется ли metadata при компиляции с помощью kotlinc

«Удаляется ли metadata при компиляции с помощью kotlinc» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Metadata в Kotlin (например, аннотации) не удаляется автоматически при компиляции с помощью kotlinc, если только не используется специальная обработка (например, ProGuard/R8 для минификации).

Пример аннотации, которая сохранится:

@Retention(AnnotationRetention.RUNTIME)
annotation class MyAnnotation

@MyAnnotation
class MyClass

После компиляции аннотация останется в .class-файле и будет доступна через рефлексию.

Исключение: Аннотации с AnnotationRetention.SOURCE удаляются на этапе компиляции.