Какой тип у Generic без reified

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

Ответ

Без reified тип Generic стирается во время выполнения (type erasure), и его фактический тип становится Any? (или верхней границей, если она указана). Поэтому нельзя проверить или использовать тип напрямую в runtime.

fun <T> checkType(item: T) {
    // Не скомпилируется - T неизвестен в runtime
    // if (item is T) { ... }
}

Для работы с типом в runtime используйте reified с inline функциями:

inline fun <reified T> checkType(item: Any) {
    if (item is T) { ... } // Теперь работает
}