Parâmetros de tipo reified: acessando T em tempo de execução
Use reified com funções inline para realizar verificações e conversões de tipo em tempo de execução.
Parâmetros de tipo reified: acessando T em tempo de execução é uma aula grátis de Kotlin Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Kotlin Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Academy inclui 4 aulas no total.
O problema do apagamento de tipos
Kotlin/JVM apaga as informações de tipos genéricos durante a execução. Dentro de uma função genérica fun , não é possível escrever T::class nem is T — a JVM não sabe o que é T após a compilação.
reified ao resgate
Combine inline com reified no parâmetro de tipo. Como a função é inserida no local da chamada, o compilador substitui o tipo real em cada local de chamada — tornando T totalmente acessível durante a execução.
inline fun <reified T> isInstance(value: Any): Boolean = value is T
val result = isInstance<String>("hello") // trueVerificando o tipo com is T
Sem reified, is T causa um erro em tempo de compilação (“Não é possível verificar uma instância de um tipo apagado”). Com ele, o compilador reescreve a verificação usando o tipo concreto fornecido no local da chamada.
inline fun <reified T> filterByType(list: List<Any>): List<T> =
list.filterIsInstance<T>()Obtendo KClass de T
Você pode obter a KClass do parâmetro de tipo com T::class. Isso permite verificações de tipo sem reflexão e referências de classes passadas para APIs.
inline fun <reified T> className(): String = T::class.simpleName ?: "Unknown"
println(className<Int>()) // "Int"Analisando com reified
Um padrão comum é um auxiliar parseJson seguro quanto aos tipos que recebe automaticamente a classe de destino:
inline fun <reified T> parseJson(json: String): T =
jacksonObjectMapper().readValue(json, T::class.java)Padrão ViewModel / Localizador de serviços
Contêineres de injeção de dependências frequentemente usam reified para retornar a instância correta sem exigir que você passe um argumento Class:
inline fun <reified T : ViewModel> Fragment.viewModel(): T =
ViewModelProvider(this)[T::class.java]Chamando APIs Java com Class<T>
Muitas APIs Java exigem um argumento Class. reified permite chamá-las sem obrigar quem faz a chamada a passar a classe explicitamente:
inline fun <reified T> Gson.fromJson(json: String): T =
fromJson(json, T::class.java)Reificados e restrições de tipo
Você pode combinar reified com limites superiores:
inline fun <reified T : Any> create(): T =
T::class.java.getDeclaredConstructor().newInstance()Limitações
Parâmetros de tipo reificados funcionam apenas em funções inline — não em classes, interfaces ou funções que não sejam inline. Você não pode chamar uma função reified com um tipo desconhecido, conhecido apenas em tempo de execução.
Como o compilador implementa isso
Em cada local de chamada, o compilador substitui T pelo argumento de tipo real. O bytecode no local da chamada contém referências diretas à classe concreta — sem necessidade de reflexão.
Exemplos da biblioteca padrão
Funções da biblioteca padrão que usam reified: filterIsInstance, emptyArray, arrayOf, typeOf. Elas funcionam precisamente porque são inline + reified.
Verificação rápida
Por que reified exige que a função seja inline?
Recapitulação: parâmetros de tipo reificados
Principais conclusões:
reifiedtorna um parâmetro de tipo acessível em tempo de execução, contornando o apagamento de tipos- Exige que a função seja
inline - Permite usar
is T,T::class,T::class.javadentro da função - É a base da análise JSON segura quanto aos tipos, dos auxiliares de DI e das APIs de referência de classes
Perguntas Frequentes
A aula “Parâmetros de tipo reified: acessando T em tempo de execução” é grátis?
Sim — o texto completo de “Parâmetros de tipo reified: acessando T em tempo de execução” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Kotlin Academy, atualize para CoddyKit PRO. O curso de Kotlin Academy inclui 4 aulas no total.
O que vou aprender em “Parâmetros de tipo reified: acessando T em tempo de execução”?
Use reified com funções inline para realizar verificações e conversões de tipo em tempo de execução. Você pratica Kotlin Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Kotlin Academy?
Nenhuma experiência prévia é necessária. Kotlin Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Parâmetros de tipo reified: acessando T em tempo de execução”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Kotlin Academy?
Sim. Cada aula de Kotlin Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Funções inline: eliminando a sobrecarga de lambdas
- Modificadores noinline e crossinline
- Parâmetros de tipo reified: acessando T em tempo de execução
- Padrões práticos com reified: análise, DI e serialização