Menggunakan nullability di Kotlin

1. Sebelum memulai

Codelab ini mengajarkan tentang nullability dan pentingnya keamanan null. Nullability adalah konsep yang umumnya ditemukan dalam banyak bahasa pemrograman. Hal ini mengacu pada kemampuan variabel untuk tidak memiliki nilai. Di Kotlin, perlakuan pada nullability sengaja diatur untuk mencapai keamanan null.

Prasyarat

  • Pengetahuan tentang dasar-dasar pemrograman Kotlin, termasuk variabel, serta fungsi println() dan main()
  • Pemahaman tentang kondisi Kotlin, termasuk pernyataan if/else dan ekspresi Boolean
  • Pengetahuan tentang class Kotlin, termasuk cara mengakses metode dan properti dari variabel.

Yang akan Anda pelajari

  • Pengertian null.
  • Perbedaan antara jenis nullable dan non-nullable
  • Pengertian keamanan null, nilai pentingnya, dan cara Kotlin mencapai keamanan null.
  • Cara mengakses metode dan properti variabel nullable dengan operator panggilan aman ?. dan operator pernyataan non-null !!.
  • Cara melakukan pemeriksaan null dengan kondisi if/else.
  • Cara mengonversi variabel nullable menjadi jenis non-nullable dengan ekspresi if/else.
  • Cara memberikan nilai default saat variabel nullable adalah null dengan ekspresi if/else atau operator Elvis ?:.

Yang akan Anda butuhkan

  • Browser web dengan akses ke Kotlin Playground

2. Menggunakan variabel nullable

Apa itu null?

Di Unit 1, Anda telah mempelajari bahwa saat mendeklarasikan variabel, Anda harus segera menetapkan nilainya. Misalnya, saat mendeklarasikan variabel favoriteActor, Anda dapat langsung menetapkan nilai string "Sandra Oh" padanya.

val favoriteActor = "Sandra Oh"

Kotak yang merepresentasikan variabel favoritActor yang diberi nilai string "Sandra Oh".

Namun, bagaimana jika Anda tidak memiliki aktor favorit? Anda mungkin ingin menetapkan nilai "Nobody" atau "None" ke variabel. Ini bukan pendekatan yang baik karena program Anda menafsirkan variabel favoriteActor memiliki nilai "Nobody" atau "None", dan bukan tidak ada nilai sama sekali. Di Kotlin, Anda dapat menggunakan null untuk menunjukkan bahwa tidak ada nilai yang terkait dengan variabel.

Kotak yang merepresentasikan variabel afavoritActor yang diberi nilai null.

Untuk menggunakan null dalam kode, ikuti langkah-langkah berikut:

  1. Di Kotlin Playground, ganti konten di bagian isi fungsi main() dengan variabel favoriteActor yang ditetapkan ke null:
fun main() {
    val favoriteActor = null
}
  1. Cetak nilai variabel favoriteActor dengan fungsi println(), lalu jalankan program ini:
fun main() {
    val favoriteActor = null
    println(favoriteActor)
}

Outputnya akan terlihat seperti cuplikan kode ini:

null

Penetapan ulang variabel dengan null

Sebelumnya, Anda sudah mempelajari bahwa Anda dapat menetapkan ulang variabel yang ditentukan dengan kata kunci var ke nilai yang berbeda dari jenis yang sama. Misalnya, Anda dapat menetapkan ulang variabel name yang dideklarasikan dengan satu nama ke nama lain selama nama baru berjenis String.

var favoriteActor: String = "Sandra Oh"
favoriteActor = "Meryl Streep"

Setelah mendeklarasikan variabel, ada kalanya Anda ingin menetapkan variabel ke null. Misalnya, setelah menyatakan aktor favorit Anda, Anda memutuskan bahwa Anda tidak ingin mengungkapkan aktor favorit Anda sama sekali. Dalam hal ini, sebaiknya tetapkan variabel favoriteActor ke null.

Memahami variabel non-nullable dan nullable

Untuk menetapkan ulang variabel favoriteActor ke null, ikuti langkah-langkah berikut:

  1. Ubah kata kunci val menjadi kata kunci var, lalu tentukan bahwa variabel favoriteActor adalah jenis String dan tetapkan ke nama aktor favorit Anda:
fun main() {
    var favoriteActor: String = "Sandra Oh"
    println(favoriteActor)
}
  1. Hapus fungsi println():
fun main() {
    var favoriteActor: String = "Sandra Oh"
}
  1. Tetapkan ulang variabel favoriteActor ke null, lalu jalankan program ini:
fun main() {
    var favoriteActor: String = "Sandra Oh"
    favoriteActor = null
}

Anda mendapatkan pesan error ini:

Pesan peringatan yang menyatakan: "Null tidak boleh berupa nilai String jenis non-null".

Di Kotlin, ada perbedaan antara jenis nullable dan non-nullable:

  • Jenis nullable adalah variabel yang dapat menyimpan null.
  • Jenis non-null adalah variabel yang tidak dapat menyimpan null.

Suatu jenis hanya nullable jika Anda secara eksplisit mengizinkannya untuk menyimpan null. Seperti yang dinyatakan dalam pesan error, jenis data String adalah jenis non-nullable sehingga Anda tidak dapat menetapkan ulang variabel ke null.

Diagram yang menunjukkan cara mendeklarasikan variabel jenis nullable. Dimulai dengan kata kunci var, diikuti dengan nama blok variabel, titik koma, jenis variabel, tanda tanya, tanda sama dengan, dan blok nilai.  Blok jenis dan tanda tanya dilambangkan dengan penandaan teks jenis Nullable sehingga memiliki jenis yang diikuti dengan tanda tanya adalah yang menjadikannya jenis nullable.

Untuk mendeklarasikan variabel nullable di Kotlin, Anda perlu menambahkan operator ? di akhir jenis. Misalnya, jenis String? dapat menyimpan string atau null, sedangkan jenis String hanya dapat menyimpan string. Untuk mendeklarasikan variabel nullable, Anda harus menambahkan jenis nullable secara eksplisit. Tanpa jenis nullable, compiler Kotlin menyimpulkan bahwa variabel itu berjenis non-nullable.

  1. Ubah jenis variabel favoriteActor dari jenis data String menjadi jenis data String?:
fun main() {
    var favoriteActor: String? = "Sandra Oh"
    favoriteActor = null
}
  1. Cetak variabel favoriteActor sebelum dan sesudah penetapan ulang null, lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = "Sandra Oh"
    println(favoriteActor)

    favoriteActor = null
    println(favoriteActor)
}

Outputnya akan terlihat seperti cuplikan kode ini:

Sandra Oh
null

Variabel favoriteActor awalnya berisi string, lalu dikonversi menjadi null.

Coba

Setelah dapat menggunakan jenis String? nullable, dapatkah Anda melakukan inisialisasi pada variabel dengan nilai Int dan menetapkannya kembali ke null?

Menulis nilai Int nullable

  1. Hapus semua kode di fungsi main():
fun main() {

}
  1. Buat variabel number dari jenis Int nullable, lalu tetapkan nilai 10 padanya:
fun main() {
    var number: Int? = 10
}
  1. Cetak variabel number, lalu jalankan program ini:
fun main() {
    var number: Int? = 10
    println(number)
}

Outputnya seperti yang diharapkan:

10
  1. Tetapkan ulang variabel number ke null untuk mengonfirmasi bahwa variabel tersebut nullable:
fun main() {
    var number: Int? = 10
    println(number)

    number = null
}
  1. Tambahkan pernyataan println(number) lain sebagai baris terakhir program, lalu jalankan:
fun main() {
    var number: Int? = 10
    println(number)

    number = null
    println(number)
}

Outputnya seperti yang diharapkan:

10
null

3. Menangani variabel nullable

Sebelumnya, Anda telah mempelajari cara menggunakan operator . untuk mengakses metode dan properti variabel non-nullable. Di bagian ini, Anda akan mempelajari cara menggunakannya untuk mengakses metode dan properti variabel nullable.

Untuk mengakses properti variabel favoriteActor non-nullable, ikuti langkah-langkah berikut:

  1. Hapus semua kode dalam fungsi main(), lalu deklarasikan variabel favoriteActor dari jenis String dan tetapkan ke nama aktor favorit Anda:
fun main() {
    var favoriteActor: String = "Sandra Oh"
}
  1. Cetak jumlah karakter di nilai variabel favoriteActor dengan properti length, lalu jalankan program ini:
fun main() {
    var favoriteActor: String = "Sandra Oh"
    println(favoriteActor.length)
}

Outputnya seperti yang diharapkan:

9

Ada sembilan karakter dalam nilai variabel favoriteActor, yang mencakup spasi. Jumlah karakter pada nama aktor favorit Anda mungkin berbeda.

Mengakses properti variabel nullable

Misalkan Anda ingin membuat variabel favoriteActor nullable agar orang yang tidak memiliki aktor favorit dapat menetapkan variabel ke null.

Untuk mengakses properti variabel favoriteActor nullable, ikuti langkah-langkah berikut:

  • Ubah jenis variabel favoriteActor menjadi jenis nullable, lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = "Sandra Oh"
    println(favoriteActor.length)
}

Anda mendapatkan pesan error ini:

Pesan error yang menyatakan, "Only safe or non-null asserted calls are allowed on a nullable receiver of type String?".

Error ini merupakan error kompilasi. Seperti disebutkan dalam codelab sebelumnya, error kompilasi terjadi saat Kotlin tidak dapat mengompilasi kode karena error sintaksis dalam kode Anda.

Kotlin dengan sengaja menerapkan aturan sintaksis agar dapat mencapai keamanan null, yang mengacu pada jaminan bahwa tidak akan ada panggilan yang tidak disengaja pada variabel yang mungkin null. Ini bukan berarti variabel tidak boleh null. Ini berarti, jika anggota variabel diakses, variabel tidak boleh null.

Hal ini penting karena jika ada upaya untuk mengakses anggota variabel yang null - dikenal sebagai referensi null - selama aplikasi berjalan, aplikasi akan error karena variabel null tidak berisi properti atau metode apa pun. Jenis error ini dikenal sebagai error runtime, yang terjadi setelah kode dikompilasi dan dijalankan.

Terkait dengan sifat keamanan null Kotlin, error runtime seperti itu dicegah karena compiler Kotlin memaksakan pemeriksaan null untuk jenis nullable. Pemeriksaan Nullmengacu pada proses pemeriksaan apakah variabel dapat berupa null sebelum diakses dan diperlakukan sebagai jenis non-nullable. Jika ingin menggunakan nilai nullable sebagai jenis non-nullable, Anda harus melakukan pemeriksaan null secara eksplisit. Anda akan mempelajari hal ini nanti di bagian Menggunakan kondisional if/else dalam codelab ini.

Dalam contoh ini, kode gagal pada waktu kompilasi karena referensi langsung ke properti length untuk variabel favoriteActor tidak diizinkan karena ada kemungkinan variabel adalah null.

Selanjutnya, Anda akan mempelajari berbagai teknik dan operator untuk bekerja dengan jenis nullable.

Menggunakan operator panggilan aman ?.

Anda dapat menggunakan operator panggilan aman ?. untuk mengakses metode atau properti dari variabel nullable.

Diagram yang menampilkan blok variabel nullable diikuti dengan tanda tanya, titik, dan blok metode atau properti. Tidak ada spasi di antaranya.

Untuk menggunakan operator panggilan aman ?. guna mengakses metode atau properti, tambahkan simbol ? setelah nama variabel dan akses metode atau properti dengan notasi ..

Operator panggilan aman ?. memungkinkan akses yang lebih aman ke variabel nullable karena compiler Kotlin menghentikan upaya akses anggota ke referensi null dan menampilkan null untuk anggota yang diakses.

Untuk mengakses properti variabel favoriteActor nullable secara aman, ikuti langkah-langkah berikut:

  1. Dalam pernyataan println(), ganti operator . dengan operator panggilan aman ?.:
fun main() {
    var favoriteActor: String? = "Sandra Oh"
    println(favoriteActor?.length)
}
  1. Jalankan program ini, lalu verifikasi bahwa outputnya seperti yang diharapkan:
9

Jumlah karakter pada nama aktor favorit Anda mungkin berbeda.

  1. Tetapkan ulang variabel favoriteActor ke null, lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = null
    println(favoriteActor?.length)
}

Anda akan melihat output ini:

null

Perhatikan bahwa program tidak mengalami error meskipun ada upaya untuk mengakses properti length dari variabel null. Ekspresi panggilan aman akan menampilkan null.

Menggunakan operator pernyataan not-null !!

Anda juga dapat menggunakan operator pernyataan not-null !! untuk mengakses metode atau properti dari variabel nullable.

Diagram yang menampilkan blok variabel nullable, diikuti dengan dua tanda seru, satu titik, dan blok metode atau properti. Tidak ada spasi di antaranya.

Setelah variabel nullable, Anda harus menambahkan operator pernyataan not-null !!, diikuti dengan operator ., lalu metode atau properti tanpa spasi.

Seperti namanya, jika Anda menggunakan pernyataan not-null !!, artinya Anda menegaskan bahwa nilai variabel bukan null, terlepas dari apakah itu yang terjadi atau tidak.

Tidak seperti operator panggilan aman ?., penggunaan operator pernyataan not-null !! dapat mengakibatkan error NullPointerException ditampilkan jika variabel nullable memang null. Dengan demikian, tindakan tersebut hanya boleh dilakukan jika variabel selalu non-nullable atau penanganan pengecualian yang tepat telah ditetapkan. Jika tidak ditangani, pengecualian akan menyebabkan error runtime. Anda akan mempelajari penanganan pengecualian di unit berikutnya pada kursus ini.

Untuk mengakses properti variabel favoriteActor dengan operator pernyataan not-null !!, ikuti langkah-langkah berikut:

  1. Tetapkan ulang variabel favoriteActor ke nama aktor favorit Anda, lalu ganti operator panggilan aman ?. dengan operator pernyataan not-null !! di pernyataan println():
fun main() {
    var favoriteActor: String? = "Sandra Oh"
    println(favoriteActor!!.length)
}
  1. Jalankan program ini, lalu verifikasi bahwa outputnya seperti yang diharapkan:
9

Jumlah karakter pada nama aktor favorit Anda mungkin berbeda.

  1. Tetapkan ulang variabel favoriteActor ke null, lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = null
    println(favoriteActor!!.length)
}

Anda mendapatkan error NullPointerException:

Pesan error yang menyatakan, "Exception in thread "main" java.lang.NullPointerException".

Error Kotlin ini menunjukkan bahwa program Anda mengalami error selama eksekusi. Dengan demikian, sebaiknya jangan gunakan operator pernyataan not-null !!, kecuali jika Anda yakin bahwa variabelnya bukan null.

Menggunakan kondisional if/else

Anda dapat menggunakan cabang if dalam kondisional if/else untuk melakukan pemeriksaan null.

Diagram yang menunjukkan blok variabel nullable diikuti dengan tanda seru, tanda sama dengan, dan null.

Untuk melakukan pemeriksaan null, Anda dapat memeriksa apakah variabel nullable tidak sama dengan null menggunakan operator perbandingan !=.

Pernyataan if/else

Pernyataan if/else dapat digunakan bersama dengan pemeriksaan null sebagai berikut:

Diagram yang menjelaskan pernyataan if/else dengan kata kunci if diikuti oleh tanda kurung dengan blok pemeriksaan null di dalamnya, sepasang kurung kurawal dengan isi 1 di dalamnya, kata kunci lain, dan sepasang kurung kurawal lainnya dengan blok isi 2 di dalamnya. Klausa lain dienkapsulasi dengan kotak merah putus-putus, yang dianotasi sebagai opsional.

Pemeriksaan null berguna saat dikombinasikan dengan pernyataan if/else:

  • Pemeriksaan null dari ekspresi nullableVariable != null digunakan sebagai kondisi if.
  • Isi 1 di dalam cabang if mengasumsikan bahwa variabel tersebut non-nullable. Oleh karena itu, dalam isi ini, Anda dapat bebas mengakses metode atau properti variabel seolah-olah variabel itu non-nullable tanpa menggunakan operator panggilan aman ?. atau operator pernyataan not-null !!.
  • Isi 2 di dalam cabang else mengasumsikan bahwa variabel tersebut null. Oleh karena itu, dalam isi ini, Anda dapat menambahkan pernyataan yang harus dijalankan saat variabelnya null. Cabang else bersifat opsional. Anda hanya dapat menggunakan kondisional if untuk menjalankan pemeriksaan null tanpa memberikan tindakan default saat pemeriksaan null gagal.

Pemeriksaan null lebih praktis digunakan dengan kondisi if jika ada beberapa baris kode yang menggunakan variabel nullable. Sebaliknya, operator panggilan aman ?. lebih praktis untuk referensi tunggal variabel nullable.

Untuk menulis pernyataan if/else dengan pemeriksaan null untuk variabel favoriteActor, ikuti langkah-langkah berikut:

  1. Tetapkan variabel favoriteActor ke nama aktor favorit Anda lagi, lalu hapus pernyataan println():
fun main() {
    var favoriteActor: String? = "Sandra Oh"

}
  1. Tambahkan cabang if dengan kondisi favoriteActor != null:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    if (favoriteActor != null) {

    }
}
  1. Dalam isi cabang if, tambahkan pernyataan println yang menerima string "The number of characters in your favorite actor's name is ${favoriteActor.length}", lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    if (favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    }
}

Outputnya seperti yang diharapkan.

The number of characters in your favorite actor's name is 9.

Jumlah karakter pada nama aktor favorit Anda mungkin berbeda.

Perhatikan bahwa Anda dapat mengakses metode panjang nama secara langsung dengan operator . karena Anda mengakses metode length di dalam cabang if setelah pemeriksaan null. Dengan demikian, compiler Kotlin mengetahui bahwa tidak ada kemungkinan bahwa variabel favoriteActor adalah null sehingga compiler mengizinkan akses langsung ke properti.

  1. Opsional: Tambahkan cabang else untuk menangani situasi ketika nama aktornya null:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    if (favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    } else {

    }
}
  1. Dalam isi cabang else, tambahkan pernyataan println yang menggunakan string "You didn't input a name.":
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    if (favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    } else {
      println("You didn't input a name.")
    }
}
  1. Tetapkan variabel favoriteActor ke null, lalu jalankan program ini:
fun main() {
    var favoriteActor: String? = null

    if(favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    } else {
      println("You didn't input a name.")
    }
}

Outputnya seperti yang diharapkan:

You didn't input a name.

Ekspresi if/else

Anda juga dapat menggabungkan pemeriksaan null dengan ekspresi if/else untuk mengonversi variabel nullable menjadi variabel non-nullable.

Diagram yang menjelaskan ekspresi if/else dengan kata kunci val, diikuti blok nama, titik dua, dan blok jenis non-null, simbol sama dengan, kata kunci if, tanda kurung dengan kondisi di dalamnya, sepasang kurung kurawal dengan isi 1 di dalamnya, kata kunci lain dengan sepasang kurung kurawal lainnya, dan blok isi 2 di dalamnya.

Untuk menetapkan ekspresi if/else ke jenis non-nullable:

  • Pemeriksaan nullableVariable != null null digunakan sebagai kondisi if.
  • Isi 1 di dalam cabang if mengasumsikan bahwa variabel tersebut non-nullable. Oleh karena itu, dalam isi ini, Anda dapat mengakses metode atau properti variabel seolah-olah variabel itu non-nullable tanpa operator aman ?. atau operator pernyataan not-null !!.
  • Isi 2 di dalam cabang else mengasumsikan bahwa variabel tersebut null. Oleh karena itu, dalam isi ini Anda dapat menambahkan pernyataan yang harus dijalankan saat variabelnya null.
  • Pada baris terakhir isi 1 dan 2, Anda harus menggunakan ekspresi atau nilai yang menghasilkan jenis non-nullable sehingga jenis itu ditetapkan ke variabel non-nullable saat pemeriksaan null lulus atau gagal.

Untuk menggunakan ekspresi if/else guna menulis ulang program sehingga hanya menggunakan satu pernyataan println, ikuti langkah-langkah berikut:

  1. Tetapkan variabel favoriteActor ke nama aktor favorit Anda:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    if (favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    } else {
      println("You didn't input a name.")
    }
}
  1. Buat variabel lengthOfName, lalu tetapkan ke ekspresi if/else:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {
      println("The number of characters in your favorite actor's name is ${favoriteActor.length}.")
    } else {
      println("You didn't input a name.")
    }
}
  1. Hapus kedua pernyataan println() dari cabang if dan else:
fun main() {
    var favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {

    } else {

    }
}
  1. Dalam isi cabang if, tambahkan ekspresi favoriteActor.length:
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {
      favoriteActor.length
    } else {

    }
}

Properti length dari variabel favoriteActor diakses langsung dengan operator ..

  1. Dalam isi cabang else, tambahkan nilai 0:
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {
      favoriteActor.length
    } else {
      0
    }
}

Nilai 0 berfungsi sebagai nilai default jika namanya null.

  1. Di akhir fungsi main(), tambahkan pernyataan println yang menggunakan string "The number of characters in your favorite actor's name is $lengthOfName.", lalu jalankan program ini:
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = if(favoriteActor != null) {
      favoriteActor.length
    } else {
      0
    }

    println("The number of characters in your favorite actor's name is $lengthOfName.")
}

Outputnya seperti yang diharapkan:

The number of characters in your favorite actor's name is 9.

Jumlah karakter pada nama yang Anda gunakan mungkin berbeda.

Menggunakan operator Elvis ?:

Operator Elvis ?: adalah operator yang dapat Anda gunakan bersama operator panggilan aman ?.. Dengan operator Elvis ?:, Anda dapat menambahkan nilai default saat operator panggilan aman ?. menampilkan null. Ini serupa dengan ekspresi if/else, tetapi dengan cara yang lebih idiomatis.

Jika variabel bukan null, ekspresi sebelum operator Elvis ?: dieksekusi. Jika variabel adalah null, ekspresi setelah operator Elvis ?: dieksekusi.

Diagram yang menunjukkan kata kunci val, diikuti dengan blok nama, tanda sama dengan, blok variabel nullable, tanda tanya, titik, blok metode atau properti, tanda tanya, titik dua, dan blok nilai default.

Untuk memodifikasi program sebelumnya untuk menggunakan operator Elvis ?:, ikuti langkah-langkah ini:

  1. Hapus kondisional if/else, lalu tetapkan variabel lengthOfName ke variabel favoriteActor nullable dan gunakan operator panggilan aman ?. untuk memanggil properti length-nya:
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = favoriteActor?.length

    println("The number of characters in your favorite actor's name is $lengthOfName.")
}
  1. Setelah properti length, tambahkan operator Elvis ?:, diikuti dengan nilai 0, lalu jalankan program ini:
fun main() {
    val favoriteActor: String? = "Sandra Oh"

    val lengthOfName = favoriteActor?.length ?: 0

    println("The number of characters in your favorite actor's name is $lengthOfName.")
}

Outputnya sama dengan output sebelumnya:

The number of characters in your favorite actor's name is 9.

4. Kesimpulan

Selamat! Anda telah mempelajari tentang nullability dan cara menggunakan berbagai operator untuk mengelolanya.

Ringkasan

  • Variabel dapat ditetapkan ke null untuk menunjukkan bahwa variabel tersebut tidak memiliki nilai.
  • Variabel non-nullable tidak dapat ditetapkan ke null.
  • Variabel nullable dapat ditetapkan ke null.
  • Untuk mengakses metode atau properti variabel nullable, Anda perlu menggunakan operator panggilan aman ?. atau operator pernyataan not-null !!.
  • Anda dapat menggunakan pernyataan if/else dengan pemeriksaan null untuk mengakses variabel nullable dalam konteks non-nullable.
  • Anda dapat mengonversi variabel nullable menjadi jenis yang non-nullable dengan ekspresi if/else.
  • Anda dapat memberikan nilai default saat variabel nullable adalah null dengan ekspresi if/else atau operator Elvis ?:.

Pelajari lebih lanjut