> Как проверить тип параметра в обобщённом методе Kotlin (Kotlin, Android)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Aston
Стек: Kotlin, Android
> Пример ответа
В Kotlin обобщённые типы стираются на этапе компиляции (type erasure), поэтому напрямую проверить тип параметра во время выполнения нельзя. Однако есть несколько обходных путей:
- Использование
reifiedс inline-функцией - самый распространённый способ:
inline fun <reified T> checkType(value: Any): Boolean { return value is T }
- Передача Class в качестве параметра:
fun <T> checkType(value: Any, clazz: Class<T>): Boolean { return clazz.isInstance(value) }
- Использование
whenс is-проверкой для известных типов (если типы ограничены):
fun <T> process(value: T) { when (value) { is String -> println("Строка") is Int -> println("Число") else -> println("Другой тип") } }
На практике для Android-разработки чаще всего применяют reified с inline-функциями, так как это наиболее лаконичный и типобезопасный подход.
> Похожие задачи по mobile
Что делают функции all и any в Kotlin и как их использовать для проверки условий
Что такое Coroutine Builders в Kotlin
Что такое contracts в Kotlin и когда их используют?
Можно ли изменить значение val в дата классе через рефлексию
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью