Kotlin Academy · Les

De basis van reflection

Inspecteer typen tijdens runtime

Les 3 van 413 stappen

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-reflect op de JVM

Gebruik reflectie voor frameworks en hulpmiddelen, niet in tijdkritische lussen.

De gereedschapskist voor reflectie

Belangrijke typen om te onthouden:

  • KClass — een klasse
  • KProperty — een eigenschap
  • KFunction — een functie
  • KParameter — 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 KClass verkrijgen via ::class
  • memberProperties en memberFunctions opsommen
  • Eigenschapswaarden lezen en functieverwijzingen aanroepen
  • Objecten bouwen met createInstance()

Vervolgens lees je annotaties dynamisch.

Gratis beginnen

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

  1. Annotaties gebruiken
  2. Annotaties definiëren
  3. De basis van reflection
  4. Praktische reflection
← Terug naar Kotlin Academy