Sobes.tech
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) функциях.