Back to questions
Junior — Middle
79
Как определить тип параметра обобщенного типа в Kotlin, если нельзя использовать reified?
Companies where asked
Effective Mobile
Answer from AI
sobes.tech AI
В Kotlin без использования reified типа во время выполнения информация о типе параметра обобщенного типа стирается (type erasure). Чтобы определить тип параметра, можно передать объект KClass<T> или Class<T> в качестве дополнительного параметра функции или конструктора. Например:
fun <T> doSomething(clazz: KClass<T>) {
when (clazz) {
String::class -> println("Это строка")
Int::class -> println("Это целое число")
else -> println("Другой тип")
}
}
// Вызов
doSomething(String::class)
Таким образом, вы явно передаете информацию о типе, которую можно использовать внутри функции. Это стандартный способ обхода отсутствия reified в обычных (не inline) функциях.