0Pricing
Kotlin Academy · Pelajaran

Refleksi Kotlin: KClass, KFunction, KProperty

Telusuri metadata class menggunakan KClass dan periksa anggotanya melalui refleksi.

Refleksi Kotlin: KClass, KFunction, KProperty adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa Itu Refleksi?

Refleksi memungkinkan kode memeriksa dan memanggil strukturnya sendiri saat dijalankan: kelas, fungsi, properti, anotasi, konstruktor. Kotlin membungkus API refleksi JVM dengan tipe yang lebih kaya miliknya sendiri dalam paket kotlin.reflect.

Mendapatkan KClass

Gunakan ::class pada tipe atau instans untuk mendapatkan referensi KClass:

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

Properti KClass

KClass menyediakan metadata tentang kelas:

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: Referensi yang Dapat Dipanggil

Gunakan ::functionName untuk mendapatkan referensi KFunction. Anda dapat memeriksa parameternya dan memanggilnya:

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

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

Memeriksa Parameter

KFunction.parameters mengembalikan daftar objek KParameter dengan nama, tipe, dan sifat opsional:

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

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

KProperty: Referensi Properti

Referensi properti menangkap properti sebagai objek kelas satu. KProperty0 digunakan untuk properti tanpa penerima; KProperty1<T, R> digunakan untuk properti anggota.

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"

Properti yang Dapat Diubah dengan KMutableProperty

Untuk properti var, referensinya adalah KMutableProperty1, yang juga memiliki fungsi set:

class Box(var value: Int)

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

Mencantumkan Semua Anggota

KClass.members mengembalikan semua anggota yang terlihat (fungsi + properti). KClass.declaredMemberProperties hanya mengembalikan properti yang dideklarasikan dalam kelas tersebut.

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

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

Membuat Instans melalui KClass

Panggil KClass.createInstance() (memerlukan konstruktor tanpa argumen) atau gunakan KClass.constructors untuk kendali penuh:

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

Dependensi Refleksi Kotlin

Refleksi Kotlin memerlukan artefak kotlin-reflect (tidak disertakan dalam stdlib). Tambahkan dependensi tersebut ke konfigurasi proyek Anda:

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

Catatan Performa

Refleksi jauh lebih lambat daripada kode langsung. Simpan referensi KClass, KFunction, dan KProperty dalam cache saat startup. Hindari memanggilnya dalam perulangan intensif. Untuk sebagian besar kode perkakas dan kerangka kerja, biaya ini dapat diterima.

Pemeriksaan Singkat

Tipe Kotlin mana yang merepresentasikan referensi ke properti anggota dan memungkinkan pembacaan nilainya dari suatu instans?

Ringkasan: Refleksi Kotlin

Tipe utama:

  • KClass — metadata kelas, konstruktor, anggota
  • KFunction — referensi yang dapat dipanggil, parameter, pemanggilan
  • KProperty1 / KMutableProperty1 — referensi properti, get/set
  • Memerlukan kotlin-reflect di jalur kelas
  • Simpan referensi dalam cache; hindari jalur eksekusi intensif

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Refleksi Kotlin: KClass, KFunction, KProperty” gratis?

Ya — teks lengkap “Refleksi Kotlin: KClass, KFunction, KProperty” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Refleksi Kotlin: KClass, KFunction, KProperty”?

Telusuri metadata class menggunakan KClass dan periksa anggotanya melalui refleksi. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Refleksi Kotlin: KClass, KFunction, KProperty” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Refleksi Kotlin: KClass, KFunction, KProperty
  2. Membuat dan Menargetkan Anotasi Kustom
  3. Membaca Anotasi saat Runtime
  4. Validasi dan Pemetaan Berbasis Refleksi
← Kembali ke Kotlin Academy