Réflexion en Kotlin
En Java lorsque l’on souhaite obtenir le type d’une classe on utilise la syntaxe suivante :
String.class
L’équivalent en Kotlin est la syntaxe littérale :
String::class
De la même manière pour obtenir la classe d’un objet la même syntaxe peut être utilisée :
val s = "Hello, Kotlin"
println(s::class) // class kotlin.String
Il est important de noter que nous obtenons une classe Kotlin
(une KClass
) et non une classe Java
.
Lorsque nous interagissons avec du code Java
il peut être nécessaire d’obtenir la classe Java
plutôt.
Pour cela la syntaxe suivante peut être utilisée :
// Classe
println(String::class.java) // class java.lang.String
// Objet
val s = "Hello, Kotlin"
println(s::class.java) // class java.lang.String
println(s.javaClass) // idem
Enfin pour obtenir la KClass
à partir de la classe Java
il suffit d’utiliser la propriété kotlin
de la classe :
String::class.java.kotlin // class kotlin.String