Kotlin: Equivalente de getClass () para KClass

En Java podemos resolver la class de una variable a través de getClass() como something.getClass() . En Kotlin estoy al tanto de something.javaClass que es agradable, pero quiero poder get KClass de manera similar. He visto la syntax de la Something::class pero esto no es lo que necesito. Necesito get la KClass de una variable. ¿Existe tal funcionalidad?

La forma más fácil de lograr esto desde Kotlin 1.1 es la syntax de reference de class :

 something::class 

Si usa Kotlin 1.0, puede convertir la class Java obtenida en una instancia de KClass llamando a la propiedad de extensión .kotlin :

 something.javaClass.kotlin 

Dado que el lenguaje no admite una forma directa de get esto todavía, considere la posibilidad de definir un método de extensión por el momento .

 fun<T: Any> T.getClass(): KClass<T> { return javaClass.kotlin } val test = 0 println("Kotlin type: ${test.getClass()}") 

O, si prefiere una propiedad:

 val<T: Any> T.kClass: KClass<T> get() = javaClass.kotlin val test = 0 println("Kotlin type: ${test.kClass}") 
  • Servicio VPN local de Android: no puede reenviar packages
  • Operaciones de transmisión diferida y reference no resuelta para transmisión ()
  • ¿Cómo get Kotlin AST?
  • Personalizando Kotlin cuando expresión
  • Spring Boot @ Autoajustado con Kotlin en @Service siempre es nulo
  • ¿Cómo instalar y configurar Kara Web Framework?
  • ¿Cómo debo probar las funciones de extensión de Kotlin?
  • Anko - alternativa para ocultar una vista y mostrar otra
  • Obtener FragmentManager dentro de AndroidViewModel
  • ¿Cómo evitar types con el mismo conflicto de nombres en Kotlin?
  • Llamadas lambda anidadas en Kotlin