Lompat ke konten Lompat ke sidebar Lompat ke footer

Belajar Kotlin Part 12: Generics untuk Kode Fleksibel dan Reusable

Belajar Kotlin Part 12 tentang generics: cara membuat kode fleksibel, reusable, dan aman untuk berbagai tipe data dalam pemrograman Android.

📌 Pendahuluan

Setelah di Part 11 kita mempelajari Error Handling & Null Safety, kini saatnya masuk ke konsep Generics di Kotlin.

Generics memungkinkan kita menulis kode yang fleksibel dan dapat digunakan ulang tanpa harus mendefinisikan ulang untuk setiap tipe data. Konsep ini sering digunakan dalam koleksi Kotlin seperti List<T>, Set<T>, dan Map<K, V>.

Kotlin Generics
generic function Kotlin, generic class Kotlin, type parameter Kotlin, variance Kotlin


🔑 Apa Itu Generics?

Generics adalah cara menulis kode yang bisa bekerja dengan berbagai tipe data tanpa harus mengulang kode.

Contoh: jika kita ingin membuat fungsi untuk mencetak list angka, string, atau objek, tanpa generics kita harus membuat fungsi berbeda. Dengan generics, cukup satu fungsi untuk semua tipe.


🧩 Contoh Penggunaan Generics di Kotlin

Generic Function

fun <T> cetakList(item: List<T>) { for (i in item) { println(i) } } fun main() { cetakList(listOf(1, 2, 3)) // List Int cetakList(listOf("A", "B", "C")) // List String }

📌 T adalah type parameter, bisa diganti dengan tipe data apa pun.


Generic Class

class Kotak<T>(val isi: T) fun main() { val kotakAngka = Kotak(123) val kotakKata = Kotak("Halo Kotlin") println(kotakAngka.isi) // 123 println(kotakKata.isi) // Halo Kotlin }

Dengan generics, kita tidak perlu membuat class berbeda untuk Int atau String.


Multiple Type Parameters

class Pasangan<K, V>(val key: K, val value: V) fun main() { val pasangan1 = Pasangan(1, "Satu") val pasangan2 = Pasangan("ID", 100) println("${pasangan1.key} = ${pasangan1.value}") println("${pasangan2.key} = ${pasangan2.value}") }

⚡ Batasan Tipe (Generic Constraints)

Kita bisa membatasi tipe yang bisa digunakan.

fun <T : Number> tambah(a: T, b: T): Double { return a.toDouble() + b.toDouble() } fun main() { println(tambah(5, 10)) // 15.0 println(tambah(2.5, 3.5)) // 6.0 }

📌 T : Number → hanya tipe turunan Number yang bisa dipakai (Int, Double, dll).


🔍 Variance: Covariant & Contravariant

Covariant (out)

Jika kita ingin mengembalikan nilai dari generics:

class Kotak<out T>(private val item: T) { fun ambil(): T = item }

Contravariant (in)

Jika kita hanya menerima nilai:

class KotakMasuk<in T> { fun simpan(item: T) { println("Menyimpan $item") } }

📚 Manfaat Menggunakan Generics

  1. Kode lebih fleksibel → bisa digunakan untuk berbagai tipe data.

  2. Mengurangi duplikasi kode → cukup buat sekali, pakai untuk banyak tipe.

  3. Lebih aman → membantu mencegah kesalahan tipe data saat compile time.

  4. Banyak digunakan di Kotlin Collections (List<T>, Map<K,V>).

  5. Mudah di-maintain → kode lebih singkat dan bersih.


🎯 Tips Belajar Generics di Kotlin

  • Biasakan membaca dokumentasi List<T>, Set<T>, Map<K,V>.

  • Gunakan type parameter (<T>) di fungsi dan class jika ada kebutuhan untuk berbagai tipe data.

  • Terapkan constraints (<T : Type>) untuk membatasi tipe data tertentu.

  • Pelajari variance (in, out) agar lebih paham cara kerja koleksi di Kotlin.

  • Praktikkan dengan membuat generic class dan generic function sendiri.


🔍 Rekomendasi Belajar Selanjutnya

  • Part 13: Kotlin Extension Functions → cara menambahkan fungsi baru ke class tanpa mengubah kode aslinya.

  • Part 14: Kotlin Lambda & Higher-Order Functions.


🏆 Kesimpulan

Di Part 12 ini, kita sudah mempelajari Generics di Kotlin, mulai dari:

  • Fungsi dan class generic.

  • Type parameter (<T>).

  • Multiple type parameters (<K, V>).

  • Constraints (T : Number).

  • Variance (in, out).

Dengan generics, kode Kotlin menjadi lebih fleksibel, reusable, dan aman.

👉 Di Part 13, kita akan membahas Extension Functions, salah satu fitur paling keren di Kotlin yang sering dipakai dalam Android development.


📌 Kotlin Generics
📌 generic function Kotlin, generic class Kotlin, type parameter Kotlin, variance Kotlin

Posting Komentar untuk "Belajar Kotlin Part 12: Generics untuk Kode Fleksibel dan Reusable"