Cómo obtener KClass de un objeto en Kotlin en lugar de getClass() de Java
¡Hola! Estoy migrando de Java a Kotlin y me encontré con un problema. En Java solía usar getClass() para obtener información sobre la clase de un objeto en tiempo de ejecución. Por ejemplo:
Object obj = "Hello";
Class<?> clazz = obj.getClass(); // Obtenemos java.lang.Class
System.out.println(clazz.getName()); // Imprime java.lang.String
En Kotlin sé que existe KClass — es el análogo de java.lang.Class, pero ¿cómo obtenerlo? Intenté así:
val obj: Any = "Hello"
val clazz = obj::class // Error: "This expression is not a class reference"
O así:
val clazz = obj.javaClass // Funciona, pero devuelve java.lang.Class, no KClass
Necesito específicamente KClass porque estoy usando reflexión de Kotlin (por ejemplo, para serialización con kotlinx.serialization). ¿Cómo obtener correctamente KClass a partir de una instancia de objeto? Y ¿cuál es la diferencia entre