> Что такое reified в inline функциях Kotlin и зачем он нужен (Kotlin, Android)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Альфа-банк, ЛеруаМерлен, TrendTech

Стек: Kotlin, Android

> Пример ответа

Ключевое слово reified в Kotlin используется в inline-функциях для сохранения информации о типе во время выполнения. Обычно в JVM из-за стирания типов (type erasure) дженерики теряют информацию о типе в runtime - например, List<String> становится просто List. reified решает эту проблему: компилятор подставляет конкретный тип прямо в место вызова функции, делая его доступным внутри тела функции.

Зачем это нужно:

  • Проверка типа: if (value is T) - без reified это невозможно.
  • Создание экземпляров: T::class.java или T::class.createInstance().
  • Работа с рефлексией: получение KClass или javaClass для дженерик-типа.

Пример:

inline fun <reified T> isInstanceOf(value: Any): Boolean {
    return value is T
}

fun main() {
    println(isInstanceOf<String>("Hello")) // true
    println(isInstanceOf<Int>("Hello"))    // false
}

Без reified пришлось бы передавать Class<T> как параметр. Важно: reified работает только в inline-функциях, так как компилятор встраивает код с конкретным типом в место вызова. Это удобно для утилит, сериализации (например, Gson.fromJson<T>) и типизированных экстеншенов в Android-разработке.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью