Dans Java nous pouvons résoudre la classe d'une variable par getClass()
comme something.getClass()
. Dans Kotlin, je suis conscient de something.javaClass
qui est gentil mais je veux pouvoir obtenir le KClass
de la même manière. J'ai vu le Something::class
_ syntaxe mais ce n’est pas ce dont j’ai besoin. Je dois obtenir le KClass d'une variable. Une telle fonctionnalité existe-t-elle?
Le moyen le plus simple d’atteindre cet objectif depuis Kotlin 1.1 est le syntaxe de référence de classe :
something::class
Si vous utilisez Kotlin 1.0, vous pouvez convertir la classe Java) obtenue en une instance KClass en appelant le .kotlin
propriété d'extension:
something.javaClass.kotlin
EDIT: voir les commentaires ci-dessous et la réponse d'Alexandre ci-dessus. Ce conseil était à l'origine pour Kotlin 1.0 et il semble que ce soit maintenant obsolète.
Puisque le langage ne supporte pas encore de moyen direct pour l'obtenir, pensez à définir une méthode d'extension pour le moment .
fun<T: Any> T.getClass(): KClass<T> {
return javaClass.kotlin
}
val test = 0
println("Kotlin type: ${test.getClass()}")
Ou, si vous préférez une propriété:
val<T: Any> T.kClass: KClass<T>
get() = javaClass.kotlin
val test = 0
println("Kotlin type: ${test.kClass}")