Fungsi dan Kelas Generik
Parametrisasi tipe
Fungsi dan Kelas Generik 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 Generik
Generik memungkinkan Anda menulis kode yang bekerja dengan banyak tipe sekaligus mempertahankan keamanan tipe sepenuhnya. Alih-alih menetapkan tipe konkret, Anda menggunakan parameter tipe (sering kali T) sebagai pengganti.
Fungsi Generik
Fungsi generik mendeklarasikan parameter tipenya di dalam kurung sudut sebelum nama fungsi. Di sini, T dapat berupa tipe apa pun.
fun <T> identity(value: T): T {
return value
}
fun main() {
println(identity(42))
println(identity("hello"))
}Inferensi Tipe
Anda jarang perlu menentukan tipe secara eksplisit; kompilator menyimpulkan T dari argumen. Namun, Anda tetap dapat menuliskannya sebagai identity<Int>(42) jika diperlukan.
fun <T> firstOf(a: T, b: T): T = a
fun main() {
val x = firstOf(10, 20)
val y = firstOf("a", "b")
println("$x $y")
}Beberapa Parameter Tipe
Sebuah fungsi dapat memiliki beberapa parameter tipe, yang berguna untuk bekerja dengan pasangan tipe yang tidak berkaitan.
fun <A, B> makePair(first: A, second: B): Pair<A, B> {
return Pair(first, second)
}
fun main() {
val p = makePair("age", 30)
println(p)
}Kelas Generik
Kelas juga dapat bersifat generik. Parameter tipe dideklarasikan setelah nama kelas dan dapat digunakan untuk properti serta fungsi.
class Box<T>(val value: T) {
fun get(): T = value
}
fun main() {
val intBox = Box(123)
val strBox = Box("Kotlin")
println(intBox.get())
println(strBox.get())
}Kelas Generik dengan Perilaku
Kelas generik dapat menyimpan status yang dapat diubah dan beroperasi pada parameter tipe, seperti wadah sederhana.
class Stack<T> {
private val items = mutableListOf<T>()
fun push(item: T) { items.add(item) }
fun pop(): T = items.removeAt(items.size - 1)
fun isEmpty() = items.isEmpty()
}
fun main() {
val stack = Stack<Int>()
stack.push(1)
stack.push(2)
println(stack.pop())
}Antarmuka Generik
Antarmuka juga dapat mendeklarasikan parameter tipe, sehingga implementasinya dapat memilih tipe konkret.
interface Container<T> {
fun item(): T
}
class StringContainer : Container<String> {
override fun item(): String = "fixed"
}
fun main() {
println(StringContainer().item())
}Mengapa Tidak Menggunakan Any Saja?
Anda dapat menyimpan nilai sebagai Any, tetapi akan kehilangan informasi tipe dan memerlukan konversi tipe. Generik mempertahankan tipe yang tepat sehingga kompilator dapat menangkap kesalahan dan konversi tipe tidak diperlukan.
fun main() {
val box: Box<String> = Box("text")
val s: String = box.get()
println(s.uppercase())
}
class Box<T>(val value: T) { fun get(): T = value }Fungsi Ekstensi Generik
Fungsi ekstensi dapat bersifat generik, sehingga utilitas yang dapat digunakan kembali tersedia untuk semua tipe.
fun <T> T.printAndReturn(): T {
println("Value: $this")
return this
}
fun main() {
val x = 5.printAndReturn()
"hi".printAndReturn()
println(x)
}Konvensi Penamaan
Sesuai konvensi, huruf kapital tunggal digunakan untuk menamai parameter tipe: T untuk tipe generik, E untuk elemen, K dan V untuk kunci serta nilai pemetaan, dan R untuk hasil.
Generik di Mana-Mana
Pustaka standar Kotlin dibangun di atas generik: List<T>, Map<K, V>, Pair<A, B>. Memahami generik membantu Anda membaca dan menggunakan tipe-tipe ini dengan percaya diri.
Pemeriksaan Singkat
Apa manfaat utama generik dibandingkan penggunaan Any?
Ringkasan
Generik menggunakan parameter tipe seperti T untuk menulis fungsi, kelas, dan antarmuka yang dapat digunakan kembali serta aman terhadap tipe. Kompilator menyimpulkan tipe dan menegakkan keamanan, sehingga konversi tipe dapat dihindari. Selanjutnya, Anda akan mengatur hubungan antartipe generik menggunakan varians di deklarasi dengan in dan out.
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 “Fungsi dan Kelas Generik” gratis?
Ya — teks lengkap “Fungsi dan Kelas Generik” 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 “Fungsi dan Kelas Generik”?
Parametrisasi tipe 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 “Fungsi dan Kelas Generik” 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
- Fungsi dan Kelas Generik
- Variansi di Lokasi Deklarasi
- Variansi di Lokasi Penggunaan
- Batasan Generik