Null pada Kotlin

Eric Wijaya
3 min readJan 7, 2019

--

Null adalah type yang digunakan untuk mewakili kondisi yang tidak mempunyai nilai.

Misal adalah kita bekerja pada data pemain, misal pemain mempunyai field nama, umur dan klub. Nama dan umur keduanya harus mempunyai nilai karena semua pemain mempunyainya, namun tidak semua pemain punya klub maka kita perlu suatu nilai untuk mewakili kondisi ini.

Ada 2 type pada kotlin, non-null type dan nullable type.

  • non-null type tidak bisa menyimpan null, jadi type ini pasti mempunyai nilai.
  • nullable type bisa menyimpan nilai maupun null.

Nullable type bisa dianalogikan sebagai suatu kotak, kotak ini bisa berisi nilai ataupun tidak. Ketika kotak itu tidak berisi nilai, kotak itu berisi null. Kotaknya sendiri selalu ada.

Nullable type dianalogikan sebagai kotak

Sedangkan non-type tidak punya kotak itu langsung pada nilainya.

Contoh deklarasi variabel yang punya type nullable:

var klub: String? // nullable type
var nama: String // non-null type

Perbedaan dengan non-null type adalah ada tanda tanya pada akhir type.

klub = "Manchester United"// klub bisa berisi null
klub = null
// nama tidak bisa berisi null
nama = null // error

Untuk menggunakan bisa nullable type kita perlu melakukan pengecekan null.

val klubLength = klub.length // error

Ada 2 pilihan untuk menggunakan nullable type yaitu dengan Not Null Assertion Operator(!!) atau menggunakan Safe Call Operator(?)

Not Null Assertion Operator (!!)

Not null assertion operator adalah kita memberi tahu compiler bahwa object tidak null sehingga tidak perlu melakukan pengecekan null.

Namun jika ternyata object berisi null, maka akan terjadi null pointer exception (NPE)

klubLength = klub!!.length

Saat memakai operator ini kita perlu berhati — hati karena perlu memastikan bahwa object tidak null.

Safe Call Operator (?)

Safe Call Operator kita juga memberi tahu compiler bahwa object tidak null, namun perbedaaannya dengan not null assertion operator adalah saat object berisi null maka return null dan tidak throw null pointer exception.

klubLength = klub?.length// klubLength -> nullable type, karena result dari safe call bisa mengembalikan null

Safe call operator dapat di chain

klubLength = klub?.length?.plus(7)// Jika salah satu properti nya null maka akan return null

Elvis Operator (?:)

Elvis Operator juga merupakan safe call pada nullable type, jadi ketika tidak null maka kita menggunakan nilainya, namun ketika null maka kita akan menggunakan default value nya.

var nullableInt: Int? = 7
var result = nullableInt ?: 0

Pada contoh di atas variabel result akan berisi nullableInt apabila nullableInt tidak null, namun jika nullableInt berisi null, maka result akan berisi 0 (default value).

Disebut Elvis operator karena mirip jambulnya Elvis ketika diputar 90 derajat searah jarum jam.

Elvis Operator

Kesimpulan

Pada tulisan ini kita belajar tentang null pada kotlin.

  • 2 type pada kotlin, non-null type dan nullable type
  • Not null assertion operator (!!), jika null akan throw null pointer exception.
  • Safe call operator (?), jika null akan return null dan tidak throw null pointer exception.
  • Elvis operator (?:), jika null akan return default value.

--

--