Réflexion Kotlin : KClass, KFunction, KProperty
Explorez les métadonnées des classes avec KClass et inspectez leurs membres par réflexion.
Réflexion Kotlin : KClass, KFunction, KProperty est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que la réflexion ?
La réflexion permet au code d'inspecter et d'appeler sa propre structure à l'exécution : classes, fonctions, propriétés, annotations et constructeurs. Kotlin encapsule l'API de réflexion de la JVM dans ses propres types plus riches, sous le paquet kotlin.reflect.
Obtenir une KClass
Utilisez ::class sur un type ou une instance pour obtenir une référence KClass :
val klass: KClass<String> = String::class
val instance: KClass<out Any> = "hello"::class
println(klass.simpleName) // "String"Propriétés de KClass
KClass expose les métadonnées de la classe :
val klass = String::class
println(klass.simpleName) // "String"
println(klass.qualifiedName) // "kotlin.String"
println(klass.isAbstract) // false
println(klass.constructors.size) // number of constructorsKFunction : références appelables
Utilisez ::functionName pour obtenir une référence KFunction. Vous pouvez inspecter ses paramètres et l'appeler :
fun greet(name: String) = "Hello, $name!"
val fn: KFunction<String> = ::greet
println(fn.name) // "greet"
println(fn.call("Kotlin")) // "Hello, Kotlin!"Inspecter les paramètres
KFunction.parameters renvoie une liste d'objets KParameter contenant le nom, le type et l'indication du caractère facultatif :
fun add(a: Int, b: Int) = a + b
::add.parameters.forEach {
println("${it.name}: ${it.type}")
}
// a: kotlin.Int
// b: kotlin.IntKProperty : références de propriétés
Les références de propriétés représentent une propriété sous la forme d'un objet de première classe. KProperty0 concerne les propriétés sans récepteur ; KProperty1 concerne les propriétés membres.
data class User(val name: String, val age: Int)
val prop: KProperty1<User, String> = User::name
val user = User("Alice", 30)
println(prop.get(user)) // "Alice"Propriétés mutables avec KMutableProperty
Pour les propriétés var, la référence est une KMutableProperty1, qui possède également une fonction set :
class Box(var value: Int)
val prop: KMutableProperty1<Box, Int> = Box::value
val box = Box(10)
prop.set(box, 42)
println(box.value) // 42Répertorier tous les membres
KClass.members renvoie tous les membres visibles (fonctions et propriétés). KClass.declaredMemberProperties renvoie uniquement les propriétés déclarées dans cette classe.
data class Point(val x: Int, val y: Int)
Point::class.declaredMemberProperties.forEach {
println(it.name) // "x", "y"
}Créer des instances avec KClass
Appelez KClass.createInstance() (nécessite un constructeur sans argument) ou utilisez KClass.constructors pour un contrôle total :
class Counter {
var count = 0
}
val c = Counter::class.createInstance()
c.count = 5
println(c.count) // 5Dépendance de réflexion Kotlin
La réflexion Kotlin nécessite l'artefact kotlin-reflect (non inclus dans la bibliothèque standard). Ajoutez-le à votre construction :
// build.gradle.kts
implementation("org.jetbrains.kotlin:kotlin-reflect")Remarque sur les performances
La réflexion est nettement plus lente que le code direct. Mettez en cache les références KClass, KFunction et KProperty au démarrage. Évitez de les appeler dans des boucles très sollicitées. Pour la plupart des outils et du code de cadriciel, ce coût est acceptable.
Vérification rapide
Quel type Kotlin représente une référence vers une propriété membre et permet de lire sa valeur à partir d'une instance ?
Récapitulatif : réflexion Kotlin
Types clés :
KClass— métadonnées de classe, constructeurs et membresKFunction— références appelables, paramètres et invocationKProperty1/KMutableProperty1— références de propriétés, lecture et écriture- Nécessite
kotlin-reflectdans le chemin de classes - Mettre les références en cache ; éviter les chemins d'exécution très sollicités
Questions Fréquemment Posées
La leçon « Réflexion Kotlin : KClass, KFunction, KProperty » est-elle gratuite ?
Oui — le texte complet de « Réflexion Kotlin : KClass, KFunction, KProperty » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Réflexion Kotlin : KClass, KFunction, KProperty » ?
Explorez les métadonnées des classes avec KClass et inspectez leurs membres par réflexion. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Réflexion Kotlin : KClass, KFunction, KProperty » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Réflexion Kotlin : KClass, KFunction, KProperty
- Créer et cibler des annotations personnalisées
- Lire les annotations à l’exécution
- Validation et mappage fondés sur la réflexion