Setiap variabel, function, class, dan package yang kita tulis butuh nama — yaitu identifier. Pada chapter ini kita akan membedah aturan penamaan identifier, daftar hard keywords yang tidak boleh dipakai sebagai nama, soft keywords dan modifier keywords yang kontekstual, serta trik escape memakai backtick ketika kita terpaksa harus memakai keyword sebagai identifier. Pemahaman ini mencegah kesalahan kompilasi yang sering muncul saat bekerja dengan library Java.

Aturan Identifier #

Identifier Kotlin adalah urutan karakter dengan aturan berikut:

  • Diawali huruf (a–z, A–Z), garis bawah _, atau tanda dolar $.
  • Karakter berikutnya boleh huruf, digit (0–9), garis bawah, atau tanda dolar.
  • Tidak boleh sama dengan hard keyword bila tidak di-escape.
  • Boleh mengandung spasi dan karakter Unicode lain bila diapit backtick.

Contoh identifier yang valid:

text Identifier valid
nama
umurPengguna
MAX_RETRY
_konfigurasi
$debug
nilai2

Contoh identifier yang tidak valid (tanpa escape):

text Identifier tidak valid
2nilai           // diawali digit
fun             // hard keyword
class           // hard keyword
nama-pengguna   // mengandung tanda hubung

Hard Keywords #

Hard keywords adalah kata yang selalu ditafsirkan sebagai keyword dan tidak boleh dipakai sebagai identifier kecuali diapit backtick. Daftar hard keywords utama Kotlin mencakup:

text Hard keywords Kotlin
as           break        class        continue     do
fun          if           in           interface    is
typealias    typeof       val          var          when
while        return       throw        try          catch
finally      for          object       package      import

Daftar di atas tidak persis sama dengan Java; Kotlin menambahkan beberapa keyword baru (when, object, is, as, typealias, typeof) dan menghapus keyword yang sudah tidak relevan.

kotlin Beberapa hard keywords yang sering dipakai
fun main() {
    val x = 5
    val y = if (x > 0) "positif" else "negatif"
    when (x) {
        0 -> println("nol")
        else -> println(y)
    }
}

Soft Keywords dan Modifier Keywords #

Berbeda dengan hard keywords, soft keywords hanya berfungsi sebagai keyword pada konteks tertentu; di luar konteks tersebut, kata yang sama dapat dipakai sebagai identifier. Contoh soft keywords:

text Soft keywords (kontekstual)
by          get         set         field
import      init        constructor receiver
param       property    set         vararg

Sebagai contoh, kata field hanya menjadi keyword di dalam accessor property; di luar situasi tersebut, field dapat dipakai sebagai nama variabel biasa:

kotlin Soft keyword 'field' di dalam property accessor
var jumlah: Int = 0
    get() = field
    set(value) { field = if (value >= 0) value else 0 }

Modifier keywords adalah kata yang dipakai sebagai modifier deklarasi — public, private, protected, internal, abstract, open, final, override, lateinit, companion, data, inline, operator, infix, tailrec, external, suspend. Modifier ini tidak menghalangi pemakaian kata yang sama sebagai identifier pada konteks lain.

Escape dengan Backtick #

Ketika kita terpaksa memakai keyword sebagai identifier — misalnya karena memanggil method Java bernama in atau is — Kotlin menyediakan escape dengan backtick (`):

kotlin
// Identifier yang valid dan idiomatik
fun main() {
    val nama = "Budi"
    val umurPengguna = 25
    val MAX_RETRY = 3
    println("Pengguna: $nama, umur: $umurPengguna, retry: $MAX_RETRY")

    // Identifier dengan backtick — escape keyword yang ingin dipakai sebagai nama
    val `in` = "posisi dalam daftar"
    val `is` = "boolean flag"
    println("in = $`in`, is = $`is`")

    // Function dengan nama yang mengandung spasi (diapit backtick)
    val hasil = `hitung total`(100, 5)
    println("Hasil: $hasil")
}

// Function identifier boleh mengandung spasi bila diapit backtick
fun `hitung total`(harga: Int, qty: Int): Int {
    return harga * qty
}

Output yang Dihasilkan:

text
Pengguna: Budi, umur: 25, retry: 3
in = posisi dalam daftar, is = boolean flag
Hasil: 500

Mari kita amati bagian penting:

  1. Baris 9 (val in = ...) — keyword in diapit backtick sehingga kompilator menafsirkannya sebagai identifier, bukan keyword. Variabel in menyimpan string biasa.
  2. Baris 10 (val is = ...) — pola yang sama untuk keyword is. Variabel is tetap valid karena di-escape.
  3. Baris 14 (fun hitung total(...)) — identifier function mengandung spasi karena diapit backtick. Kotlin mengizinkan ini untuk keperluan khusus seperti nama test yang ekspresif.
  4. Baris 15-17 — saat memanggil function hitung total, kita tetap memakai backtick: `hitung total`(100, 5).

Kapan Memakai Backtick #

Backtick sebaiknya dipakai secara selektif, bukan sebagai kebiasaan. Skenario yang umum:

SkenarioContoh
Memanggil method Java yang namanya sama dengan keyword KotlinSystem.in`` , obj.is(value)
Nama function test yang ekspresiffun `saat input kosong, harus kembalikan 0`()
Interoperabilitas dengan library Java lawasval `class` = "com.example.Foo"

Backtick tidak mengubah runtime behavior — hanya memengaruhi parsing kompilator. Saat di-compile menjadi bytecode JVM, identifier in tetap disimpan apa adanya; getIn() pada method getter tidak terpengaruh. Bytecode JVM tidak mengenal konsep keyword, sehingga identifier yang di-escape di Kotlin tetap menjadi nama field/method biasa pada level bytecode. Ini berarti kode Kotlin yang memakai keyword sebagai identifier tetap kompatibel dengan library Java yang memanggil method tersebut.

Identifier Unicode dan Karakter Khusus #

Kotlin mendukung karakter Unicode pada identifier, sehingga kita dapat memakai huruf non-Latin:

kotlin Identifier Unicode (boleh, namun jarang dipakai di proyek internasional)
val nama = "Budi"           // sudah biasa
val ñoño = "Siti"           // identifier dengan diakritik
val Π = 3.14159             // huruf Yunani untuk konstanta matematika

Walaupun kompiler menerima identifier Unicode, praktik industri cenderung membatasi diri pada ASCII agar mudah dipertukarkan antar tim internasional. Library standar Kotlin sendiri hanya memakai identifier ASCII.

Daftar Lengkap Keywords #

Untuk referensi cepat, berikut ringkasan tiga kategori keyword Kotlin:

KategoriContohBoleh jadi identifier?
Hard keywordsfun, val, var, class, interface, object, package, import, if, when, for, while, do, return, break, continue, throw, try, catch, finally, in, is, as, typealias, typeofTidak (kecuali di-escape)
Soft keywordsby, get, set, field, init, constructor, receiver, param, property, vararg, tailrec, suspend, data, inline, noinline, crossinline, reified, externalYa, tergantung konteks
Modifier keywordspublic, private, protected, internal, abstract, open, final, override, lateinit, companion, sealed, enum, annotation, const, operator, infixYa, sebagai modifier deklarasi

Referensi Lanjutan #

Memahami identifier dan keyword membangun fondasi penamaan kode yang sehat. Setelah mengetahui kata apa yang boleh dan tidak boleh dipakai sebagai nama, kita siap mengikuti konvensi penamaan resmi Kotlin — pembahasan lengkap menanti pada chapter Aturan Penamaan.