Dasar-dasar Refleksi
Periksa tipe saat runtime
Dasar-dasar Refleksi adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 adalah kemampuan program untuk memeriksa dan memanipulasi strukturnya sendiri saat program berjalan: kelas, properti, fungsi, dan anotasi.
Refleksi Kotlin berada dalam paket kotlin.reflect dan berpusat pada KClass.
Mendapatkan KClass
Gunakan sintaksis ::class pada tipe atau instans untuk mendapatkan objek KClass.
class Robot
fun main() {
val fromType = Robot::class
val fromInstance = Robot()::class
println(fromType.simpleName)
println(fromInstance.simpleName)
}Nama Sebuah Kelas
Sebuah KClass menyediakan simpleName dan qualifiedName. Nama berkualifikasi mencakup jalur paket.
class Engine
fun main() {
val k = Engine::class
println(k.simpleName)
println(k.qualifiedName)
}Memeriksa Properti
memberProperties mencantumkan properti suatu kelas. Masing-masing adalah KProperty yang dapat Anda tanyai name-nya.
import kotlin.reflect.full.memberProperties
class Point(val x: Int, val y: Int)
fun main() {
for (p in Point::class.memberProperties) {
println(p.name)
}
}Membaca Nilai Properti
KProperty1 dapat dipanggil dengan sebuah instans untuk membaca nilainya melalui get(instance).
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))
}
}Memeriksa Fungsi
memberFunctions mengembalikan fungsi-fungsi yang dapat dipanggil dari sebuah kelas sebagai objek KFunction. Anda dapat membaca name setiap fungsi.
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) }
}Referensi Fungsi
Sintaksis ::name menghasilkan referensi yang dapat dipanggil bertipe KFunction. Anda dapat memanggilnya nanti dengan invoke atau meneruskannya.
fun double(n: Int) = n * 2
fun main() {
val ref = ::double
println(ref.name)
println(ref.invoke(21))
}Membuat Instans
createInstance() membangun objek secara reflektif ketika kelas memiliki konstruktor tanpa argumen.
import kotlin.reflect.full.createInstance
class Widget {
override fun toString() = "Widget"
}
fun main() {
val w = Widget::class.createInstance()
println(w)
}Memeriksa Konstruktor
constructors mencantumkan konstruktor kelas. Anda dapat memeriksa parameters-nya untuk mengetahui argumen yang diharapkannya.
class Person(val name: String, val age: Int)
fun main() {
val ctor = Person::class.constructors.first()
ctor.parameters.forEach { println(it.name) }
}Biaya dan Hal yang Perlu Diperhatikan
Refleksi sangat bermanfaat, tetapi:
- Lebih lambat daripada pemanggilan langsung
- Melewati keamanan saat kompilasi
- Memerlukan pustaka
kotlin-reflectpada JVM
Gunakan refleksi untuk kerangka kerja dan alat bantu, bukan dalam perulangan yang sering dijalankan.
Perangkat Refleksi
Jenis-jenis penting yang perlu diingat:
KClass— sebuah kelasKProperty— sebuah propertiKFunction— sebuah fungsiKParameter— sebuah parameter
Bersama-sama, jenis-jenis ini memungkinkan Anda membaca struktur secara dinamis.
Pemeriksaan Singkat
Uji pemahaman Anda tentang dasar-dasar refleksi.
Ringkasan
Anda mempelajari dasar-dasar refleksi:
- Mendapatkan
KClassmelalui::class - Mencantumkan
memberPropertiesdanmemberFunctions - Membaca nilai properti dan memanggil referensi fungsi
- Membangun objek dengan
createInstance()
Selanjutnya: membaca anotasi secara dinamis.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Dasar-dasar Refleksi” gratis?
Ya — teks lengkap “Dasar-dasar Refleksi” 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 “Dasar-dasar Refleksi”?
Periksa tipe saat runtime 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 3 dari 4.
Berapa lama pelajaran “Dasar-dasar Refleksi” 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
- Menggunakan Anotasi
- Mendefinisikan Anotasi
- Dasar-dasar Refleksi
- Refleksi Praktis