Для какой операции reified обязателен

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

Ответ

reified обязателен при работе с дженериками в inline-функциях, когда нужно получить доступ к реальному типу T во время выполнения. Без reified информация о типе стирается из-за JVM-стирания типов.

Пример:

inline fun <reified T> parseJson(json: String): T {
    return Gson().fromJson(json, T::class.java)
}

// Использование
val user = parseJson<User>(jsonString) // T сохраняется как User

Без reified нельзя получить T::class.java, так как T становится Object после компиляции. reified сохраняет тип, но требует inline, так как код подставляется в месте вызова.