Avatar ·

Como funciona a palavra-chave reified em Kotlin e para que serve?

Olá a todos! Estou aprendendo Kotlin e me deparei com um problema ao trabalhar com generics. Estou tentando escrever uma função simples que recebe uma lista e retorna a quantidade de elementos de um determinado tipo. Por exemplo, quero contar quantas strings ou números existem na lista. Aqui está meu código:\n\n```kotlin\nfun countElements(list: List): Int {\n return list.filter { it is T }.count() // Erro: Cannot check for instance of erased type: T\n}\n```\n\nO compilador reclama e diz que não é possível verificar o tipo T em tempo de execução. Eu li sobre type erasure em Java, mas pensei que em Kotlin isso fosse resolvido de alguma forma. Depois encontrei a palavra-chave `reified`, mas não entendo completamente como usá-la e o que ela realmente faz.\n\nVocês podem explicar com exemplos:\n1. Por que esse erro ocorre?