> Почему нельзя работать с generic без inline в Kotlin (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: MTS
Стек: Kotlin, Android
> Пример ответа
В Kotlin дженерики (generics) реализованы через стирание типов (type erasure) на уровне JVM, как и в Java. Это означает, что во время выполнения информация о конкретном типе-параметре (например, T в List<T>) недоступна - компилятор заменяет её на границу (обычно Object). Поэтому без inline нельзя, например, создать экземпляр T, проверить is T или получить class от T.
Ключевое отличие: inline-функции в Kotlin подставляют свой код непосредственно в место вызова на этапе компиляции. Благодаря этому тип-параметр становится реифицированным (reified) - компилятор "видит" конкретный тип в точке вызова и может сохранить его для runtime. Например:
inline fun <reified T> isInstance(value: Any): Boolean = value is T
Без inline и reified такой код не скомпилируется, так как is T требует знания типа во время выполнения. Аналогично нельзя получить T::class или создать массив Array<T>.
Таким образом, inline - единственный способ обойти стирание типов в Kotlin, позволяя работать с дженериками как с полноценными типами в runtime.
> Похожие задачи по mobile
Можно ли изменить переменную типа val в Kotlin
Как сравнить два объекта дата класса по значению в Kotlin
Как передаются параметры функции в Kotlin, по ссылке или по значению
Что такое деструктуризация в Kotlin и как она работает
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью