Почему для reified не работает стирание типов

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

Ответ

Reified позволяет сохранить информацию о типе во время выполнения, избегая стирания, благодаря inline-функциям. При компиляции код inline-функции подставляется на место вызова, и тип становится известен статически.

Пример:

inline fun <reified T> checkType(value: Any) {
    if (value is T) println("Correct type")
    else println("Wrong type")
}

checkType<String>("test") // Выведет: Correct type

Без reified проверка value is T невозможна из-за стирания типа T в runtime. Inline-функции позволяют "подставить" реальный тип (String в примере) прямо в месте вызова, сохраняя его информацию.