0Pricing
Kotlin Academy · Pelajaran

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-reflect pada 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 kelas
  • KProperty — sebuah properti
  • KFunction — sebuah fungsi
  • KParameter — 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 KClass melalui ::class
  • Mencantumkan memberProperties dan memberFunctions
  • 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

  1. Menggunakan Anotasi
  2. Mendefinisikan Anotasi
  3. Dasar-dasar Refleksi
  4. Refleksi Praktis
← Kembali ke Kotlin Academy