¿Cómo get una class de time de ejecución de una variable en Kotlin?

Quiero get una reference a un KClass de time de ejecución de una variable. Revisé la documentation de las classs y la reflexión, pero la documentation parece explicar cómo get una reference estática a KClass (por ejemplo, String::class for String )

Necesito una KClass de time de ejecución de una variable. Esto no parece comstackr:

 fun test(x: Any) { val klazz = x::class } 

¿Cómo se obtiene la KClass de x en el ejemplo anterior?

Como se dijo en la reference , puede usar .javaClass.kotlin para get el token KClass de un object. Ejemplo:

 fun printKClass(x: Any) { val c = x.javaClass.kotlin println(c) } 

Para cualquier otra manipulación con KClass , también debe agregar la biblioteca kotlin-reflect como una dependencia, ya que la funcionalidad de reflexión se ha movido fuera de kotlin-stdlib .

x::class funciona bien siempre que tengas kotlin-reflect en tu classpath.

  • La delegación de propiedad kotlin alias lanza Exception
  • Verificar si la function es extensión
  • Reflexión de Kotlin: compruebe si la propiedad tiene tipo
  • Implementando una interfaz de kotlin en java
  • Manera idiomática de invocar methods a través de la reflexión en Kotlin
  • ¿Hay alguna manera de identificar una class de datos Kotlin de una class regular de Kotlin?
  • ¿Cómo get un KType en Kotlin?
  • Interoperabilidad de reflexión de Kotlin con Java
  • El operador de Kotlin Reflection obtiene la implementación
  • Kotlin invoke getter / setter reflexivamente
  • Kotlin: ¿Cómo puedo usar la reflexión en los packages?