object di Kotlin — adalah cara deklaratif untuk membuat objek singleton dengan inisialisasi malas dan keamanan utas secara default. Kata kunci object menggantikan seluruh kelas dengan satu instance dan digunakan untuk mendeklarasikan singleton, companion object, objek anonim, dan utilitas statis. Menurut JetBrains Kotlin Documentation (2026), object declaration adalah cara paling sederhana dan aman untuk mengimplementasikan singleton di dunia JVM.
Poin Utama
object di Kotlin — adalah bentuk deklarasi khusus yang sekaligus mendefinisikan kelas dan membuat satu-satunya instance (singleton). Ini adalah hibrida dari class declaration dan instance creation dalam satu konstruksi.
Di Java untuk membuat singleton, Anda perlu menulis konstruktor privat, field statis, metode getInstance, dan menangani keamanan utas. Kotlin object melakukannya dengan satu baris kode: object MySingleton { }. Kompiler secara otomatis menghasilkan inisialisasi malas yang aman untuk utas menggunakan mekanisme static initializer dalam bytecode JVM.
Menurut Kotlin Language Specification (2026), object declaration dikompilasi menjadi kelas final dengan konstruktor privat dan field statis INSTANCE, yang diinisialisasi dalam blok statis. Ini menjamin atomicitas inisialisasi di tingkat JVM.
Object declaration (objek singleton) dideklarasikan menggunakan kata kunci object, diikuti oleh nama. Badan objek dapat berisi properti, metode, blok init, dan mewarisi kelas atau antarmuka lain.
object DatabaseManager {
private val connection: String = "jdbc:postgresql://localhost:5432/app"
fun query(sql: String): List<Map<String, Any>> {
// mengeksekusi query
return emptyList()
}
}
// Penggunaan
DatabaseManager.query("SELECT * FROM users")
Inisialisasi DatabaseManager terjadi pada saat akses pertama — malas dan aman untuk utas. Tidak ada kode tambahan untuk sinkronisasi yang diperlukan.
Object dapat mewarisi kelas biasa dan antarmuka. Ini memungkinkan penggunaan object sebagai implementasi kelas abstrak atau antarmuka dengan satu instance.
interface Logger {
fun log(message: String)
}
object ConsoleLogger : Logger {
override fun log(message: String) {
println("[LOG] $message")
}
}
companion object — adalah object khusus yang dideklarasikan di dalam kelas dengan kata kunci companion. Ini menggantikan anggota statis di Kotlin, karena dalam bahasa ini tidak ada kata kunci static.
class ApiClient {
companion object {
private const val BASE_URL = "https://api.example.com"
fun create(): ApiClient {
return ApiClient()
}
}
}
// Memanggil tanpa membuat instance ApiClient
val client = ApiClient.create()
Companion object dapat memiliki nama (standarnya Companion), mengimplementasikan antarmuka, dan diperluas melalui extension functions. Berbeda dengan metode statis di Java, companion object adalah objek lengkap yang dapat diteruskan sebagai argumen atau disimpan dalam variabel.
Menurut Kotlin Best Practices (2026), companion object digunakan untuk metode pabrik, konstanta, dan utilitas statis yang terkait dengan kelas. Disarankan untuk menghindari penggunaan companion object yang berlebihan — untuk utilitas yang tidak terkait, lebih baik menggunakan fungsi tingkat atas.
Untuk kompatibilitas dengan Java, metode companion object dapat dianotasi dengan @JvmStatic. Ini menghasilkan metode statis nyata dalam bytecode JVM, yang dapat diakses dari kode Java tanpa sintaks Companion.
Object expression — adalah objek anonim yang dibuat di tempat untuk menimpa metode kelas atau antarmuka tanpa mendeklarasikan kelas bernama terpisah.
val handler = object : Runnable {
override fun run() {
println("Tugas dijalankan")
}
}
thread(handler)
Object expressions berbeda dari deklarasi object karena mereka membuat instance baru setiap kali dieksekusi. Mereka bukan singleton dan tidak memiliki nama. Objek anonim dapat menangkap variabel dari penutupan, seperti halnya lambda.
Berbeda dengan Java, di mana kelas anonim hanya dapat mewarisi satu tipe, Kotlin object expression dapat mewarisi beberapa tipe sekaligus.
interface Clickable {
fun click()
}
abstract class View {
abstract fun render()
}
val button = object : View(), Clickable {
override fun render() = println("Merender tombol")
override fun click() = println("Tombol diklik")
}
Object — salah satu konstruksi Kotlin yang paling serbaguna, digunakan dalam banyak skenario.
Di proyek Android, object sering digunakan untuk mendeklarasikan Repository, di mana tidak diperlukan banyak instance. Satu instance menjamin konsistensi data.
object UserRepository {
fun getUser(id: Int): User? {
// mendapatkan pengguna
return null
}
}
Companion object dengan metode pabrik — alternatif untuk beberapa konstruktor. Metode pabrik bernama membuat kode menjadi self-documenting.
data class GsonParser {
companion object {
fun create(): GsonParser = GsonParser()
fun createPretty(): GsonParser = GsonParser()
}
}
Object dapat berfungsi sebagai wadah untuk konstanta, menggantikan field static final di Java. Object mendukung pewarisan, memungkinkan pembuatan hierarki konfigurasi.
Menurut Kotlin Standard Library (2026), object declaration adalah cara paling performant untuk membuat singleton di Kotlin, melampaui implementasi "double-checked locking" dalam kecepatan dan sebanding dengan enum singleton di Java.
Pertanyaan yang Sering Diajukan
Object sekaligus mendeklarasikan kelas dan membuat satu-satunya instance. Kelas biasa dapat memiliki banyak instance yang dibuat melalui konstruktor.
Malas — saat akses pertama ke objek. Sebelum itu, memori tidak dialokasikan dan kode di blok init tidak dijalankan.
Tidak, object tidak dapat memiliki konstruktor eksplisit. Inisialisasi dilakukan di blok init, yang dipanggil sekali pada akses pertama ke objek.
companion object — adalah object yang dideklarasikan di dalam kelas. Anggotanya dapat diakses melalui nama kelas tanpa membuat instance, menggantikan anggota statis Java.
Ya, inisialisasi object sepenuhnya thread-safe berkat inisialisator statis JVM. Tidak diperlukan sinkronisasi tambahan.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga