Kotlin Academy · Pelajaran

Parameter Tipe reified: Mengakses T saat Runtime

Gunakan reified bersama fungsi inline untuk melakukan pemeriksaan dan cast tipe saat runtime.

Pelajaran 3 dari 413 langkah

Parameter Tipe reified: Mengakses T saat Runtime 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.

Masalah Penghapusan Tipe

Kotlin/JVM menghapus informasi tipe generik saat program berjalan. Di dalam fungsi generik fun foo(), Anda tidak dapat menulis T::class atau is T — JVM tidak mengetahui apa itu T setelah kompilasi.

reified sebagai Solusi

Gabungkan inline dengan reified pada parameter tipe. Karena fungsi tersebut disebariskan, compiler mengganti parameter itu dengan tipe sebenarnya di setiap lokasi pemanggilan — sehingga T dapat diakses sepenuhnya saat program berjalan.

inline fun <reified T> isInstance(value: Any): Boolean = value is T

val result = isInstance<String>("hello")  // true

Memeriksa Tipe dengan is T

Tanpa reified, is T menyebabkan kesalahan saat kompilasi ("Tidak dapat memeriksa instans dari tipe yang dihapus"). Dengan reified, kompilator menulis ulang pemeriksaan tersebut menggunakan tipe konkret yang diberikan di lokasi pemanggilan.

inline fun <reified T> filterByType(list: List<Any>): List<T> =
    list.filterIsInstance<T>()

Memperoleh KClass dari T

Anda dapat memperoleh KClass dari parameter tipe menggunakan T::class. Hal ini memungkinkan pemeriksaan tipe tanpa refleksi dan penerusan referensi kelas ke API.

inline fun <reified T> className(): String = T::class.simpleName ?: "Unknown"

println(className<Int>())  // "Int"

Penguraian dengan reified

Pola yang umum adalah pembantu parseJson yang aman secara tipe dan menerima kelas target secara otomatis:

inline fun <reified T> parseJson(json: String): T =
    jacksonObjectMapper().readValue(json, T::class.java)

Pola ViewModel / Pencari Layanan

Kontainer injeksi dependensi sering menggunakan reified untuk mengembalikan instans yang benar tanpa mengharuskan Anda meneruskan argumen Class:

inline fun <reified T : ViewModel> Fragment.viewModel(): T =
    ViewModelProvider(this)[T::class.java]

Memanggil API Java dengan Class<T>

Banyak API Java memerlukan argumen Class. reified memungkinkan Anda memanggilnya tanpa memaksa pemanggil meneruskan kelas secara eksplisit:

inline fun <reified T> Gson.fromJson(json: String): T =
    fromJson(json, T::class.java)

reified dan Batasan Tipe

Anda dapat menggabungkan reified dengan batas atas:

inline fun <reified T : Any> create(): T =
    T::class.java.getDeclaredConstructor().newInstance()

Keterbatasan

Parameter tipe reified hanya berfungsi dalam fungsi inline—bukan dalam kelas, antarmuka, atau fungsi non-inline. Anda tidak dapat memanggil fungsi reified dengan tipe yang hanya diketahui saat waktu berjalan.

Cara Kompilator Menerapkannya

Di setiap lokasi pemanggilan, kompilator mengganti T dengan argumen tipe sebenarnya. Kode byte di lokasi pemanggilan berisi referensi langsung ke kelas konkret—tanpa memerlukan refleksi.

Contoh Pustaka Standar

Fungsi pustaka standar yang menggunakan reified: filterIsInstance(), emptyArray(), arrayOf(), typeOf(). Fungsi-fungsi ini bekerja secara tepat karena merupakan fungsi inline + reified.

Pemeriksaan Singkat

Mengapa reified mengharuskan fungsi tersebut menjadi inline?

Rangkuman: Parameter Tipe reified

Hal-hal penting:

  • reified membuat parameter tipe dapat diakses saat waktu berjalan, sehingga melewati penghapusan tipe
  • Mengharuskan fungsi menjadi inline
  • Memungkinkan penggunaan is T, T::class, T::class.java di dalam fungsi
  • Mendukung penguraian JSON yang aman secara tipe, pembantu DI, dan API referensi kelas
Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Parameter Tipe reified: Mengakses T saat Runtime” gratis?

Ya — teks lengkap “Parameter Tipe reified: Mengakses T saat Runtime” 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 “Parameter Tipe reified: Mengakses T saat Runtime”?

Gunakan reified bersama fungsi inline untuk melakukan pemeriksaan dan cast 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 “Parameter Tipe reified: Mengakses T saat Runtime” 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. Fungsi inline: Menghilangkan Overhead Lambda
  2. Modifier noinline dan crossinline
  3. Parameter Tipe reified: Mengakses T saat Runtime
  4. Pola Reified Praktis: Parsing, DI, dan Serialisasi
← Kembali ke Kotlin Academy