De basis van reflection
Inspecteer typen tijdens runtime
De basis van reflection is een gratis Kotlin Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Kotlin Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Kotlin Academy bevat in totaal 4 lessen.
Wat is reflectie?
Reflectie is de mogelijkheid van een programma om tijdens de uitvoering zijn eigen structuur te onderzoeken en te wijzigen: klassen, eigenschappen, functies en annotaties.
Kotlin-reflectie bevindt zich in het pakket kotlin.reflect en draait om KClass.
Een KClass verkrijgen
Gebruik de syntaxis ::class op een type of instantie om het bijbehorende KClass-object te verkrijgen.
class Robot
fun main() {
val fromType = Robot::class
val fromInstance = Robot()::class
println(fromType.simpleName)
println(fromInstance.simpleName)
}Namen van een klasse
Een KClass stelt simpleName en qualifiedName beschikbaar. De volledig gekwalificeerde naam bevat het pad van het pakket.
class Engine
fun main() {
val k = Engine::class
println(k.simpleName)
println(k.qualifiedName)
}Eigenschappen inspecteren
memberProperties geeft de eigenschappen van een klasse terug. Elke eigenschap is een KProperty waarvan je de name kunt opvragen.
import kotlin.reflect.full.memberProperties
class Point(val x: Int, val y: Int)
fun main() {
for (p in Point::class.memberProperties) {
println(p.name)
}
}Eigenschapswaarden lezen
Je kunt een KProperty1 met een instantie aanroepen om de waarde ervan via get(instance) te lezen.
import kotlin.reflect.full.memberProperties
class Point(val x: Int, val y: Int)
fun main() {
val p = Point(3, 4)
for (prop in Point::class.memberProperties) {
println(prop.name + " = " + prop.get(p))
}
}Functies inspecteren
memberFunctions geeft de aanroepbare functies van een klasse terug als KFunction-objecten. Je kunt de name van elke functie lezen.
import kotlin.reflect.full.memberFunctions
class Calculator {
fun add(a: Int, b: Int) = a + b
fun negate(a: Int) = -a
}
fun main() {
Calculator::class.memberFunctions
.filter { it.name in listOf("add", "negate") }
.forEach { println(it.name) }
}Functieverwijzingen
De syntaxis ::name levert een aanroepbare verwijzing van het type KFunction op. Je kunt deze later met invoke aanroepen of doorgeven.
fun double(n: Int) = n * 2
fun main() {
val ref = ::double
println(ref.name)
println(ref.invoke(21))
}Instanties maken
createInstance() bouwt reflectief een object wanneer de klasse een constructor zonder argumenten heeft.
import kotlin.reflect.full.createInstance
class Widget {
override fun toString() = "Widget"
}
fun main() {
val w = Widget::class.createInstance()
println(w)
}Constructors inspecteren
constructors geeft de constructors van de klasse terug. Je kunt hun parameters onderzoeken om te zien welke argumenten ze verwachten.
class Person(val name: String, val age: Int)
fun main() {
val ctor = Person::class.constructors.first()
ctor.parameters.forEach { println(it.name) }
}Kosten en aandachtspunten
Reflectie is krachtig, maar:
- Langzamer dan directe aanroepen
- Omzeilt de compileertijdveiligheid
- Vereist de bibliotheek
kotlin-reflectop de JVM
Gebruik reflectie voor frameworks en hulpmiddelen, niet in tijdkritische lussen.
De gereedschapskist voor reflectie
Belangrijke typen om te onthouden:
KClass— een klasseKProperty— een eigenschapKFunction— een functieKParameter— een parameter
Samen laten ze je structuur dynamisch lezen.
Korte controle
Toets je begrip van de basisprincipes van reflectie.
Samenvatting
Je hebt de basisprincipes van reflectie geleerd:
- Een
KClassverkrijgen via::class memberPropertiesenmemberFunctionsopsommen- Eigenschapswaarden lezen en functieverwijzingen aanroepen
- Objecten bouwen met
createInstance()
Vervolgens lees je annotaties dynamisch.
Leer Kotlin met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “De basis van reflection” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Kotlin Academy, waaronder “De basis van reflection”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Kotlin Academy bevat in totaal 4 lessen.
Wat leer ik in “De basis van reflection”?
Inspecteer typen tijdens runtime Je oefent met Kotlin Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Kotlin Academy te beginnen?
Ervaring vooraf is niet nodig. Kotlin Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “De basis van reflection”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Kotlin Academy?
Ja. Elke les over Kotlin Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Annotaties gebruiken
- Annotaties definiëren
- De basis van reflection
- Praktische reflection