0Pricing
Kotlin Academy · Lektion

Grundlagen der Reflection

Untersuchen Sie Typen zur Laufzeit

Grundlagen der Reflection ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Kotlin Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist Reflection?

Reflection bezeichnet die Fähigkeit eines Programms, seine eigene Struktur zur Laufzeit zu untersuchen und zu bearbeiten: Klassen, Properties, Funktionen und Annotationen.

Die Kotlin-Reflection befindet sich im Paket kotlin.reflect und dreht sich im Kern um KClass.

Eine KClass abrufen

Verwenden Sie die Syntax ::class für einen Typ oder eine Instanz, um deren KClass-Objekt abzurufen.

class Robot

fun main() {
    val fromType = Robot::class
    val fromInstance = Robot()::class
    println(fromType.simpleName)
    println(fromInstance.simpleName)
}

Namen einer Klasse

Eine KClass stellt simpleName und qualifiedName bereit. Der qualifizierte Name enthält den Paketpfad.

class Engine

fun main() {
    val k = Engine::class
    println(k.simpleName)
    println(k.qualifiedName)
}

Properties untersuchen

memberProperties listet die Properties einer Klasse auf. Jedes Element ist eine KProperty, deren name Sie abfragen können.

import kotlin.reflect.full.memberProperties

class Point(val x: Int, val y: Int)

fun main() {
    for (p in Point::class.memberProperties) {
        println(p.name)
    }
}

Property-Werte lesen

Eine KProperty1 kann mit einer Instanz aufgerufen werden, um ihren Wert über get(instance) zu lesen.

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))
    }
}

Funktionen untersuchen

memberFunctions gibt die aufrufbaren Funktionen einer Klasse als KFunction-Objekte zurück. Sie können den name jeder Funktion auslesen.

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) }
}

Funktionsreferenzen

Die Syntax ::name erzeugt eine aufrufbare Referenz vom Typ KFunction. Sie können sie später mit invoke aufrufen oder weitergeben.

fun double(n: Int) = n * 2

fun main() {
    val ref = ::double
    println(ref.name)
    println(ref.invoke(21))
}

Instanzen erstellen

createInstance() erstellt ein Objekt mittels Reflection, wenn die Klasse einen Konstruktor ohne Argumente besitzt.

import kotlin.reflect.full.createInstance

class Widget {
    override fun toString() = "Widget"
}

fun main() {
    val w = Widget::class.createInstance()
    println(w)
}

Konstruktoren untersuchen

constructors listet die Konstruktoren der Klasse auf. Sie können deren parameters untersuchen, um herauszufinden, welche Argumente sie erwarten.

class Person(val name: String, val age: Int)

fun main() {
    val ctor = Person::class.constructors.first()
    ctor.parameters.forEach { println(it.name) }
}

Kosten und Einschränkungen

Reflection ist leistungsfähig, aber:

  • Langsamer als direkte Aufrufe
  • Umgeht die Sicherheit zur Kompilierzeit
  • Erfordert die Bibliothek kotlin-reflect auf der JVM

Verwenden Sie sie für Frameworks und Werkzeuge, nicht in häufig durchlaufenen Schleifen.

Der Reflection-Werkzeugkasten

Die wichtigsten Typen im Überblick:

  • KClass — eine Klasse
  • KProperty — eine Property
  • KFunction — eine Funktion
  • KParameter — ein Parameter

Zusammen ermöglichen sie Ihnen, die Struktur dynamisch auszulesen.

Kurzer Test

Testen Sie Ihr Verständnis der Grundlagen von Reflection.

Zusammenfassung

Sie haben die Grundlagen der Reflection gelernt:

  • Eine KClass über ::class abrufen
  • memberProperties und memberFunctions auflisten
  • Property-Werte lesen und Funktionsreferenzen aufrufen
  • Objekte mit createInstance() erstellen

Als Nächstes: Annotationen dynamisch auslesen.

Häufig gestellte Fragen

Ist die Lektion „Grundlagen der Reflection“ kostenlos?

Ja — der vollständige Text von „Grundlagen der Reflection“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Kotlin Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Kotlin Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Grundlagen der Reflection“?

Untersuchen Sie Typen zur Laufzeit Du übst Kotlin Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Kotlin Academy zu starten?

Keine Vorkenntnisse erforderlich. Kotlin Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Grundlagen der Reflection“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Kotlin Academy-Lektion Code schreiben und ausführen?

Ja. Jede Kotlin Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Annotationen verwenden
  2. Annotationen definieren
  3. Grundlagen der Reflection
  4. Praktische Reflection
← Zurück zu Kotlin Academy