Pada artikel sebelumnya, penulis telah membahas mengenai setup project kotlin dengan menggunakan gradle. Nah pada artikel ini, penulis akan membahas sedikit mengenai null safety pada kotlin.
Apa Itu Null Safety
Sebagai developer java, anda pasti sering menemui yang namanya NullPointerException atau disingkat dengan NPE. Terkadang kita akan mengecek seluruh object apakah terdapat potensi NPE atau tidak dan NPE ini sangat sering terjadi terutama jika anda adalah android developer. Pada kotlin, anda dapat membedakan antara variabel yang boleh null dan yang tidak boleh null. Supaya lebih memahami, silahkan buka project yang dulu pernah anda buat, lalu buatlah sebuah file kotlin di dalam package org.rizki.mufrizal.belajarKotlin dengan nama NullSafety. Kemudian isikan codingan seperti berikut.
Dari codingan diatas, maka secara otomatis codingan anda akan error seperti berikut.
Error ini disebabkan karena secara default variabel pada kotlin tidak boleh diisi dengan null, sehingga dengan error ini developer lebih dapat mengatasi NPE. Agar variabel diatas dapat diisi dengan null maka silahkan ubah codingan nya menjadi seperti berikut.
Tanda dari ? berfungsi agar variabel tersebut dapat diisi dengan null. Oke langkah selanjutnya adalah ketika anda ingin mengetahui panjang dari suatu string, biasanya kita akan menggunakan function dari length, Jika anda menggunakan tanda ? maka setiap mengakses function length maka anda wajib juga menyertakan tanda ?, di IntelliJ IDEA, ketika anda mencoba mengakses function length tanpa tanda ? maka warna nya akan gelap pertanda bahwa anda diwajibkan menggunakan tanda ? seperti berikut.
Jika anda tidak menggunakan tanda ? maka akan compiler akan memberitahukan error karena variabel memiliki nilai null. Untuk mengatasi hal demikian, silahkan ubah codingan menjadi seperti berikut.
Untuk mempermudah melakukan test, silahkan ubah codingan diatas menjadi seperti berikut.
Jika pada codingan sebelumnya kita langsung melakukan print, maka pada codingan ini kita mendeklarasikan sebuah function dengan mengembalikan type data string. Pada function nullOrNot terdapat 1 parameter yaitu text dimana parameter ini dapat diisi dengan null dikarenakan menggunakan tanda ?. Untuk mengembalikan data dalam bentuk string, kita dapat langsung melakukan return jika codingan hanya sebaris seperti codingan diatas dan tanpa perlu menggunakan keyword return.
Langkah selanjutnya, kita akan membuat test nya, silahkan buat sebuah kotlin file dengan nama NullSafetyTest di dalam package test, kemudian isikan codingan seperti berikut.
Memeriksa Null
Jika kita menggunakan tanda ? maka jika anda mengakses suatu function contohnya length maka kita akan mendapatkan output null, terkadang kita ingin mengambalikan value yang lain. Alaternatif lain adalah dengan menggunakan fungsi if. Silahkan edit source code yang ada pada class NullSafety seperti berikut.
Pada kodingan diatas kita ada penambahan 1 function yaitu nullOrNotIf dimana sebenarnya function ini juga sama dengan function nullOrNot, bedanya yaitu pada function ini kita melakukan pengecekan null terhadap variabel text sehingga pada saat kita mengakses function length dari variabel text, kita tidak perlu lagi menggunakan tanda ?. Jika kita memasukkan null, maka nantinya akan dicetak Kosong / Isinya null sedangkan jika tidak null maka akan dicetak kalimat hello mufrizal dengan panjang text : 8.
Selain menggunakan if else, untuk mengecek null, kita juga dapat menggunakan elvis, silahkan ubah codingan seperti berikut.
Dengan menggunakan elvis, kita hanya perlu menggunakan operator ?:, sintak ini mirip dengan ternary operator. Jika text?.length tidak null maka akan dikembalikan nilai text?.length, sedangkan jika null maka akan dikembalikan nilai 0.
Dan yang terakhir adalah adanya operator !!, biasanya operator ini berfungsi untuk mengembalikan data yang benar - benar tidak null, jika null maka akan menghasilkan error, berikut adalah contoh penggunaan !!, silahkan ubah source code seperti berikut.
oke langkah selanjutnya kita akan membuat test nya, silahkan ubah source code yang ada di dalam file NullSafetyTest seperti berikut.
Memeriksa Null Pada Collections
Terkadang ketika memasukkan suatu nilai ke sebuah collection, nilai tersebut dapat berupa null. Jika menggunakan kotlin, terdapat function filterNotNull yang berfungsi untuk menghilangkan value null yang terdapat di dalam collection. Silahkan ubah codingan nya menjadi seperti berikut.
Pada codingan diatas terdapat tambahan yaitu tambahan function filterCollection, dimana didalam function tersebut dilakukan filter terhadap list dengan type data bebas, mengapa bebas ? ini dikarenakan kita menggunakan tanda * atau sama juga dengan generic. Untuk melakukan perulangan terhadap variabel listNotNull maka dapat menggunakan function forEach. Disini saya menggunakan variabel it, variabel it sebenarnya variabel yang mengembalikan nilai dari perulangan variabel listNotNull. Jadi variabel it tergantung dari type data yang ada di dalam list tersebut.
Tahap selanjutnya kita membuat test nya, silahkan ubah codingan NullSafetyTest seperti berikut.
Untuk melakukan test diatas, silahkan jalankan perintah berikut.
dan berikut hasilnya.
Sekian artikel mengenai mengenal null safety pada kotlin, jika ada saran dan komentar silahkan isi dibawah dan terima kasih :)