Sobes.tech
Junior — Middle

Como é que se pode determinar o tipo de um parâmetro genérico em tempo de execução sem usar reified?

sobes.tech IA

Resposta da IA

No Kotlin, sem usar tipos reified, não é possível determinar diretamente o tipo de um parâmetro genérico em tempo de execução devido ao apagamento de tipos (type erasure). No entanto, pode-se passar explicitamente a classe do tipo como um parâmetro de função ou construtor:

fun <T> doSomething(clazz: Class<T>) {
    // Usar clazz para determinar o tipo T em tempo de execução
    println("Tipo do parâmetro: ${clazz.simpleName}")
}

doSomething(String::class.java) // Vai imprimir: Tipo do parâmetro: String

Dessa forma, o tipo é passado explicitamente, e é possível trabalhar com ele em tempo de execução sem reified. Este é um padrão comum para contornar a limitação do apagamento de tipos.