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.