0Pricing
Kotlin Academy · Lektion

Kotlin Reflection: KClass, KFunction, KProperty

Navigieren Sie mithilfe von KClass durch Klassenmetadaten und untersuchen Sie Member per Reflection.

Kotlin Reflection: KClass, KFunction, KProperty ist eine kostenlose Kotlin Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 ermöglicht es Code, seine eigene Struktur zur Laufzeit zu untersuchen und aufzurufen: Klassen, Funktionen, Properties, Annotationen und Konstruktoren. Kotlin kapselt die JVM-Reflection-API mit eigenen, umfangreicheren Typen im Paket kotlin.reflect.

Eine KClass abrufen

Verwenden Sie ::class bei einem Typ oder einer Instanz, um eine KClass-Referenz abzurufen:

val klass: KClass<String> = String::class
val instance: KClass<out Any> = "hello"::class
println(klass.simpleName)  // "String"

KClass-Properties

KClass stellt Metadaten über die Klasse bereit:

val klass = String::class
println(klass.simpleName)        // "String"
println(klass.qualifiedName)     // "kotlin.String"
println(klass.isAbstract)        // false
println(klass.constructors.size) // number of constructors

KFunction: Aufrufbare Referenzen

Verwenden Sie ::functionName, um eine KFunction-Referenz abzurufen. Sie können deren Parameter untersuchen und die Funktion aufrufen:

fun greet(name: String) = "Hello, $name!"

val fn: KFunction<String> = ::greet
println(fn.name)           // "greet"
println(fn.call("Kotlin")) // "Hello, Kotlin!"

Parameter untersuchen

KFunction.parameters gibt eine Liste von KParameter-Objekten mit Namen, Typ und Angabe zurück, ob der jeweilige Parameter optional ist:

fun add(a: Int, b: Int) = a + b

::add.parameters.forEach {
    println("${it.name}: ${it.type}")
}
// a: kotlin.Int
// b: kotlin.Int

KProperty: Property-Referenzen

Property-Referenzen bilden eine Property als erstklassiges Objekt ab. KProperty0 ist für Properties ohne Receiver vorgesehen; KProperty1 für Member-Properties.

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"

Veränderbare Properties mit KMutableProperty

Bei var-Properties ist die Referenz eine KMutableProperty1, die zusätzlich über eine set-Funktion verfügt:

class Box(var value: Int)

val prop: KMutableProperty1<Box, Int> = Box::value
val box = Box(10)
prop.set(box, 42)
println(box.value)  // 42

Alle Member auflisten

KClass.members gibt alle sichtbaren Member zurück – Funktionen und Properties. KClass.declaredMemberProperties gibt nur die Properties zurück, die in dieser Klasse deklariert sind.

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

Point::class.declaredMemberProperties.forEach {
    println(it.name)  // "x", "y"
}

Instanzen über KClass erstellen

Rufen Sie KClass.createInstance() auf – dafür ist ein Konstruktor ohne Argumente erforderlich – oder verwenden Sie KClass.constructors, wenn Sie vollständige Kontrolle benötigen:

class Counter {
    var count = 0
}
val c = Counter::class.createInstance()
c.count = 5
println(c.count)  // 5

Kotlin-Reflect-Abhängigkeit

Die Kotlin-Reflection erfordert das Artefakt kotlin-reflect, das nicht in der stdlib enthalten ist. Fügen Sie es Ihrem Build hinzu:

// build.gradle.kts
implementation("org.jetbrains.kotlin:kotlin-reflect")

Hinweis zur Performance

Reflection ist deutlich langsamer als direkter Code. Cachen Sie KClass-, KFunction- und KProperty-Referenzen beim Start. Vermeiden Sie deren Aufruf in zeitkritischen Schleifen. Für die meisten Tooling- und Framework-Anwendungen ist dieser Aufwand akzeptabel.

Schnelltest

Welcher Kotlin-Typ stellt eine Referenz auf eine Member-Property dar und ermöglicht das Lesen ihres Werts aus einer Instanz?

Zusammenfassung: Kotlin-Reflection

Wichtige Typen:

  • KClass – Klassenmetadaten, Konstruktoren und Member
  • KFunction – aufrufbare Referenzen, Parameter und Aufruf
  • KProperty1 / KMutableProperty1 – Property-Referenzen sowie get/set
  • Erfordert kotlin-reflect im Classpath
  • Referenzen cachen und in Hot Paths vermeiden

Häufig gestellte Fragen

Ist die Lektion „Kotlin Reflection: KClass, KFunction, KProperty“ kostenlos?

Ja — der vollständige Text von „Kotlin Reflection: KClass, KFunction, KProperty“ 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 „Kotlin Reflection: KClass, KFunction, KProperty“?

Navigieren Sie mithilfe von KClass durch Klassenmetadaten und untersuchen Sie Member per Reflection. 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 1 von 4.

Wie lange dauert die Lektion „Kotlin Reflection: KClass, KFunction, KProperty“?

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. Kotlin Reflection: KClass, KFunction, KProperty
  2. Benutzerdefinierte Annotationen erstellen und anwenden
  3. Annotationen zur Laufzeit auslesen
  4. Reflection-basierte Validierung und Zuordnung
← Zurück zu Kotlin Academy