Avatar ·

Como obter o KClass de um objeto em Kotlin em vez de getClass() do Java?

Olá! Estou migrando de Java para Kotlin e me deparei com um problema. Em Java, eu costumava usar getClass() para obter informações sobre a classe de um objeto em tempo de execução. Por exemplo:

\n\n
Object obj = "Hello";\nClass<?> clazz = obj.getClass(); // Obtém java.lang.Class\nSystem.out.println(clazz.getName()); // Imprime java.lang.String\n
\n\n

Em Kotlin, sei que existe KClass — que é o equivalente a java.lang.Class, mas como obtê-lo? Tentei assim:

\n\n
val obj: Any = "Hello"\nval clazz = obj::class // Erro: "This expression is not a class reference"\n
\n\n

Ou assim:

\n\n
val clazz = obj.javaClass // Funciona, mas retorna java.lang.Class, não KClass\n
\n\n

Preciso exatamente do