Anda di halaman 1dari 12

Memahami dasar-dasar pemrograman: Sebelum mempelajari Kotlin, ada baiknya untuk

memahami dasar-dasar pemrograman seperti variabel, tipe data, operasi aritmatika,


dan struktur kontrol. Hal ini akan membantu pemula dalam memahami sintaksis Kotlin
dengan lebih mudah.

Memahami konsep pemrograman berorientasi objek (OOP): Kotlin merupakan bahasa


pemrograman berorientasi objek sehingga penting untuk memahami konsep-konsep OOP
seperti class, object, inheritance, dan polymorphism.

Memahami sintaksis Kotlin: Setelah memahami dasar-dasar pemrograman dan konsep OOP,
pemula dapat mulai mempelajari sintaksis Kotlin seperti fungsi, variabel, operator,
dan struktur kontrol.

Memahami fitur-fitur Kotlin: Kotlin memiliki beberapa fitur yang tidak dimiliki
oleh bahasa pemrograman lain seperti null safety, lambdas, extension functions, dan
coroutine. Pemula dapat mempelajari fitur-fitur ini untuk memaksimalkan penggunaan
Kotlin.

Membuat proyek sederhana: Setelah memahami dasar-dasar Kotlin, pemula dapat mencoba
membuat proyek sederhana seperti aplikasi konsol atau aplikasi desktop dengan
menggunakan framework Kotlin seperti TornadoFX atau JavaFX.

Mempelajari penggunaan Kotlin pada Android: Kotlin juga dapat digunakan untuk
mengembangkan aplikasi Android. Pemula dapat mempelajari penggunaan Kotlin pada
Android dengan membuat aplikasi sederhana atau dengan menggunakan tutorial Kotlin
Android yang tersedia secara online.

Mempelajari penggunaan Kotlin pada proyek multi-platform: Kotlin juga dapat


digunakan pada proyek multi-platform seperti Kotlin Multiplatform Mobile atau
Kotlin Multiplatform. Pemula dapat mempelajari penggunaan Kotlin pada proyek multi-
platform dengan menggunakan tutorial atau dokumentasi yang tersedia secara online.

Setiap tahapan belajar Kotlin dapat diikuti dengan membaca buku atau tutorial
Kotlin, serta mencoba membuat kode program sendiri untuk mempraktikkan apa yang
telah dipelajari.

Whatthefak Whatthefak
Buat daftar pembelajaran kotlin

Berikut adalah daftar pembelajaran Kotlin untuk pemula:

Dasar-dasar Kotlin
Variabel dan tipe data
Struktur kontrol
Fungsi
OOP dasar (class, object, inheritance, polymorphism)
Konsep-konsep lanjutan
Null safety
Extension functions
Lambdas
Coroutines
Operator overloading
Penggunaan Kotlin pada berbagai platform
Kotlin pada Android
Kotlin Multiplatform
Kotlin pada server-side web development
Framework dan library Kotlin
TornadoFX
Ktor
Spring
Javalin
Anko
Proyek dan aplikasi sederhana
Aplikasi konsol sederhana
Aplikasi desktop dengan TornadoFX
Aplikasi Android dengan Kotlin
Aplikasi web dengan Spring dan Kotlin
Pengujian dan debugging
Pengujian unit
Debugging kode Kotlin
Penerapan best practices
Kode yang bersih dan mudah dibaca
Prinsip SOLID
Desain pattern
Penggunaan Git
Setiap topik pembelajaran Kotlin dapat diikuti dengan membaca buku, artikel, atau
tutorial Kotlin, serta mencoba membuat kode program sendiri untuk mempraktikkan apa
yang telah dipelajari.

Variabel dan tipe data adalah dasar dari setiap bahasa pemrograman termasuk Kotlin.
Variabel adalah wadah yang digunakan untuk menyimpan data sementara dalam program.
Tipe data adalah jenis data yang dapat disimpan dalam sebuah variabel dan
menentukan batasan nilai dan operasi yang dapat dilakukan pada data tersebut.

Kotlin memiliki beberapa tipe data seperti berikut:

Byte: tipe data bilangan bulat 8-bit dengan rentang nilai -128 hingga 127.
Short: tipe data bilangan bulat 16-bit dengan rentang nilai -32,768 hingga 32,767.
Int: tipe data bilangan bulat 32-bit dengan rentang nilai -2^31 hingga 2^31-1.
Long: tipe data bilangan bulat 64-bit dengan rentang nilai -2^63 hingga 2^63-1.
Float: tipe data pecahan 32-bit dengan presisi 6-7 digit.
Double: tipe data pecahan 64-bit dengan presisi 15-16 digit.
Boolean: tipe data yang hanya memiliki dua nilai yaitu true dan false.
Char: tipe data karakter unicode.
Contoh penggunaan variabel dan tipe data dalam Kotlin adalah sebagai berikut:

kotlin
Copy code
// deklarasi variabel
val angkaPertama: Int = 10
var angkaKedua = 5 // tipe data akan disimpulkan menjadi Int

// operasi aritmatika
val hasilTambah = angkaPertama + angkaKedua
val hasilKali = angkaPertama * angkaKedua
val hasilPembagian = angkaPertama / angkaKedua
val hasilModulus = angkaPertama % angkaKedua

// tipe data pecahan


val nilaiFloat: Float = 3.14F
val nilaiDouble: Double = 3.141592653589793238

// tipe data karakter


val karakter: Char = 'A'
// tipe data boolean
val benar: Boolean = true
val salah = false
Penjelasan:

Variabel angkaPertama dideklarasikan dengan tipe data Int dan diinisialisasi dengan
nilai 10.
Variabel angkaKedua dideklarasikan tanpa tipe data sehingga Kotlin akan menentukan
tipe datanya sendiri berdasarkan nilai awal variabel.
Hasil operasi aritmatika antara variabel angkaPertama dan angkaKedua disimpan dalam
variabel hasilTambah, hasilKali, hasilPembagian, dan hasilModulus.
Variabel nilaiFloat dideklarasikan dengan tipe data Float dan diinisialisasi dengan
nilai 3.14F (harus diberikan suffix F karena secara default Kotlin akan menentukan
tipe data pecahan sebagai Double).
Variabel nilaiDouble dideklarasikan dengan tipe data Double dan diinisialisasi
dengan nilai pi.
Variabel karakter dideklarasikan dengan tipe data Char dan diinisialisasi dengan
karakter 'A'.
Variabel benar dan salah dideklarasikan dengan tipe data Boolean dan diinisialisasi
dengan nilai `true

Whatthefak Whatthefak
Pembahasan struktur kontrol dan contohnya

Struktur kontrol adalah fitur penting dalam bahasa pemrograman yang digunakan untuk
mengatur alur program. Struktur kontrol pada Kotlin meliputi:

if-else: digunakan untuk mengeksekusi blok kode jika suatu kondisi bernilai benar
dan blok kode lain jika kondisi salah.
when: mirip dengan switch pada bahasa pemrograman lain, digunakan untuk
mengevaluasi ekspresi dan memilih salah satu blok kode yang sesuai dengan nilai
ekspresi tersebut.
for: digunakan untuk melakukan perulangan pada sebuah range atau koleksi data.
while: digunakan untuk melakukan perulangan selama suatu kondisi bernilai benar.
do-while: mirip dengan while, hanya saja blok kode akan dieksekusi setidaknya satu
kali sebelum mengecek kondisi.
Contoh penggunaan struktur kontrol pada Kotlin adalah sebagai berikut:

kotlin
Copy code
// if-else
val angka = 10
if (angka > 0) {
println("$angka adalah bilangan positif")
} else if (angka < 0) {
println("$angka adalah bilangan negatif")
} else {
println("$angka adalah nol")
}

// when
val grade = 'B'
when (grade) {
'A' -> println("Excellent")
'B' -> println("Good")
'C' -> println("Fair")
'D' -> println("Poor")
else -> println("Invalid grade")
}

// for
val numbers = arrayOf(1, 2, 3, 4, 5)
for (number in numbers) {
println(number)
}

// while
var i = 1
while (i <= 5) {
println(i)
i++
}

// do-while
var j = 1
do {
println(j)
j++
} while (j <= 5)
Penjelasan:

Variabel angka dideklarasikan dan diinisialisasi dengan nilai 10. Kemudian


dilakukan pengecekan dengan menggunakan if-else untuk menentukan apakah nilai
tersebut bilangan positif, negatif, atau nol.
Variabel grade dideklarasikan dan diinisialisasi dengan karakter 'B'. Kemudian
dilakukan pengecekan dengan menggunakan when untuk menentukan nilai kelas
berdasarkan karakter tersebut.
Variabel numbers dideklarasikan sebagai array berisi bilangan-bilangan. Kemudian
dilakukan perulangan dengan menggunakan for untuk mencetak setiap bilangan dalam
array.
Variabel i dideklarasikan dan diinisialisasi dengan nilai 1. Kemudian dilakukan
perulangan dengan menggunakan while untuk mencetak bilangan 1 sampai 5.
Variabel j dideklarasikan dan diinisialisasi dengan nilai 1. Kemudian dilakukan
perulangan dengan menggunakan do-while untuk mencetak bilangan 1 sampai 5.
Perbedaan dengan while adalah bahwa blok kode dalam do-while akan dieksekusi
setidaknya satu kali sebelum mengecek kondisi.

Whatthefak Whatthefak
Pembahasan fungsi dalam kotlin dan contohnya

Fungsi atau function adalah blok kode yang terpisah dari kode utama dan dapat
dipanggil oleh kode utama atau oleh fungsi lainnya. Dalam Kotlin, fungsi
dideklarasikan dengan kata kunci fun, diikuti oleh nama fungsi, parameter (jika
ada), dan tipe data kembalian (jika ada).

Contoh penggunaan fungsi pada Kotlin adalah sebagai berikut:

kotlin
Copy code
// fungsi tanpa parameter dan tanpa nilai kembalian
fun helloWorld() {
println("Hello, World!")
}
// fungsi dengan parameter dan tanpa nilai kembalian
fun greet(name: String) {
println("Hello, $name!")
}

// fungsi dengan parameter dan nilai kembalian


fun calculateSum(num1: Int, num2: Int): Int {
return num1 + num2
}

// fungsi dengan ekspresi tunggal dan nilai kembalian


fun double(num: Int) = num * 2

// pemanggilan fungsi
helloWorld() // output: Hello, World!
greet("John") // output: Hello, John!
println(calculateSum(3, 5)) // output: 8
println(double(5)) // output: 10
Penjelasan:

Fungsi helloWorld() tidak memiliki parameter dan tidak mengembalikan nilai apa pun.
Fungsi ini hanya mencetak pesan "Hello, World!" ke konsol.
Fungsi greet() memiliki satu parameter bertipe String dan tidak mengembalikan nilai
apa pun. Fungsi ini mencetak pesan "Hello, {nama}!" ke konsol, di mana {nama}
adalah nilai parameter yang diberikan.
Fungsi calculateSum() memiliki dua parameter bertipe Int dan mengembalikan hasil
penjumlahan dari kedua parameter tersebut.
Fungsi double() memiliki satu parameter bertipe Int dan mengembalikan hasil
perkalian parameter tersebut dengan 2. Dalam contoh ini, ekspresi num * 2 digunakan
sebagai nilai kembalian, sehingga kata kunci return tidak diperlukan.
Pemanggilan fungsi dilakukan dengan menuliskan nama fungsi diikuti oleh tanda
kurung pembuka dan parameter (jika ada). Hasil kembalian dari fungsi dapat
digunakan untuk keperluan lain dalam kode.

Whatthefak Whatthefak
Pembahasan Oop dasar dan konsep² lanjutan beserta contohnya sekaligus contoh soal

Pembahasan OOP Dasar dan Konsep Lanjutan

OOP (Object-Oriented Programming) adalah paradigma pemrograman yang berorientasi


pada objek. Kotlin mendukung OOP dan memiliki fitur-fitur seperti kelas, objek,
properti, dan metode. Beberapa konsep OOP yang perlu dipahami antara lain:

Kelas (Class)
Kelas adalah blueprint atau template untuk membuat objek. Kelas berisi properti
(variabel) dan metode (fungsi) yang diperlukan untuk mengakses atau memanipulasi
properti tersebut. Contoh deklarasi kelas pada Kotlin adalah sebagai berikut:

kotlin
Copy code
class Person {
var name: String = ""
var age: Int = 0

fun sayHello() {
println("Hello, my name is $name and I'm $age years old.")
}
}
Kelas Person memiliki dua properti (name dan age) dan satu metode (sayHello()).
Properti name dan age dideklarasikan dengan tipe data String dan Int, masing-
masing. Metode sayHello() mencetak pesan "Hello, my name is {nama} and I'm {umur}
years old." ke konsol, di mana {nama} dan {umur} adalah nilai properti name dan
age.

Objek (Object)
Objek adalah instance dari kelas. Dengan kata lain, objek adalah implementasi
konkret dari kelas. Objek dapat digunakan untuk mengakses properti dan metode yang
ada di dalam kelas. Contoh deklarasi objek pada Kotlin adalah sebagai berikut:

kotlin
Copy code
val person1 = Person()
Dalam contoh di atas, variabel person1 merupakan objek dari kelas Person. Objek
person1 dapat digunakan untuk mengakses properti dan metode yang ada di dalam kelas
Person. Contoh penggunaan objek pada Kotlin adalah sebagai berikut:

kotlin
Copy code
person1.name = "John"
person1.age = 30
person1.sayHello() // output: Hello, my name is John and I'm 30 years old.
Pada contoh di atas, properti name dan age pada objek person1 diisi dengan nilai
"John" dan 30, masing-masing. Metode sayHello() kemudian dipanggil pada objek
person1, yang mencetak pesan "Hello, my name is John and I'm 30 years old." ke
konsol.

Enkapsulasi (Encapsulation)
Enkapsulasi adalah konsep OOP yang menempatkan properti dan metode yang berhubungan
dengan properti tersebut dalam satu kelas, dan hanya mengizinkan akses ke properti
tersebut melalui metode yang terkait. Dengan enkapsulasi, properti yang dimiliki
oleh suatu objek tidak dapat diubah secara langsung dari luar kelas. Contoh
deklarasi kelas dengan enkapsulasi pada Kotlin adalah sebagai berikut:

kotlin
Copy code
class Person(private var name: String, private var age: Int) {

fun sayHello() {
println("Hello, my name is $name and I'm $age years old.")
}

fun setName(name: String) {


this.name = name
}

fun setAge(age:

Whatthefak Whatthefak
Lanjutan nya apa

Pewarisan (Inheritance)
Pewarisan adalah konsep OOP yang memungkinkan kelas untuk menurunkan sifat-sifat
atau properti dan metode dari kelas lain. Kelas yang mewarisi sifat-sifat dari
kelas lain disebut subkelas (subclass), sedangkan kelas yang memberikan sifat-
sifatnya disebut superclass. Contoh deklarasi kelas dengan pewarisan pada Kotlin
adalah sebagai berikut:

kotlin
Copy code
open class Person(private var name: String, private var age: Int) {

fun sayHello() {
println("Hello, my name is $name and I'm $age years old.")
}

class Student(name: String, age: Int, private var grade: String) : Person(name,
age) {

fun getGrade() : String {


return grade
}

}
Pada contoh di atas, kelas Person merupakan superclass dan kelas Student merupakan
subkelas dari Person. Kelas Student mewarisi properti name dan age dari kelas
Person. Kelas Student juga memiliki properti grade dan metode getGrade(), yang
hanya ada pada kelas Student. Metode getGrade() pada kelas Student mengembalikan
nilai properti grade.

Polimorfisme (Polymorphism)
Polimorfisme adalah konsep OOP yang memungkinkan suatu objek untuk dianggap sebagai
objek dari kelas lain. Polimorfisme dapat dicapai melalui penggunaan konsep
pewarisan dan penggunaan metode yang sama pada beberapa kelas yang berbeda. Contoh
penggunaan polimorfisme pada Kotlin adalah sebagai berikut:

kotlin
Copy code
fun main() {
val person1: Person = Person("John", 30)
val student1: Person = Student("Jane", 25, "A")

person1.sayHello()
student1.sayHello()
}
Pada contoh di atas, variabel person1 dan student1 masing-masing diisi dengan objek
Person dan Student. Meskipun student1 merupakan objek dari subkelas Student, namun
tetap bisa dianggap sebagai objek dari superclass Person. Metode sayHello() yang
ada pada kelas Person dipanggil pada objek person1 dan student1, dan akan
mengeluarkan pesan yang berbeda.

Contoh Soal

Berikut adalah contoh soal yang dapat digunakan untuk melatih pemahaman tentang
konsep OOP pada Kotlin:

Buatlah kelas Animal dengan properti name dan metode eat().


Buatlah kelas Cat yang merupakan subkelas dari Animal dengan properti color dan
metode meow().
Buatlah kelas Dog yang merupakan subkelas dari Animal dengan properti breed dan
metode bark().
Buatlah objek dari kelas Cat dan Dog dan panggil metode eat(), meow(), dan bark()
pada masing-masing objek.
Berikut adalah contoh implementasi dari contoh soal tersebut:

kotlin
Copy code
open class Animal(var name: String) {

fun eat() {
println("$name is eating.")
}

Whatthefak Whatthefak
Lanjutan nya apa

kotlin
Copy code
class Cat(name: String, var color: String) : Animal(name) {

fun meow() {
println("$name is meowing.")
}

class Dog(name: String, var breed: String) : Animal(name) {

fun bark() {
println("$name is barking.")
}

}
Pada contoh di atas, kelas Cat dan Dog merupakan subkelas dari Animal. Kelas Cat
memiliki properti color dan metode meow(), sedangkan kelas Dog memiliki properti
breed dan metode bark().

Berikut adalah implementasi dari pemanggilan metode pada objek:

kotlin
Copy code
fun main() {
val cat: Cat = Cat("Kitty", "White")
val dog: Dog = Dog("Buddy", "Golden Retriever")

cat.eat()
cat.meow()

dog.eat()
dog.bark()
}
Pada contoh di atas, variabel cat dan dog masing-masing diisi dengan objek Cat dan
Dog. Metode eat() dipanggil pada masing-masing objek, sedangkan metode meow() hanya
dipanggil pada objek cat dan metode bark() hanya dipanggil pada objek dog. Output
dari kode di atas adalah sebagai berikut:
python
Copy code
Kitty is eating.
Kitty is meowing.
Buddy is eating.
Buddy is barking.
Dalam contoh soal ini, kita dapat memahami konsep pewarisan dan polimorfisme pada
Kotlin. Kelas Cat dan Dog merupakan subkelas dari Animal, sehingga keduanya
mewarisi properti dan metode yang ada pada kelas Animal. Selain itu, karena kelas
Cat dan Dog memiliki metode yang berbeda (meow() dan bark()), maka kita dapat
memanfaatkan polimorfisme untuk memanggil metode yang sesuai pada masing-masing
objek.

Whatthefak Whatthefak
Apa masih ada lanjutan nya?

Tentu, masih banyak konsep-konsep OOP lanjutan pada Kotlin yang dapat dipelajari.
Berikut adalah beberapa di antaranya:

Abstract Class dan Interface


Abstract class dan interface adalah konsep OOP yang penting dalam Kotlin. Abstract
class adalah kelas yang tidak dapat diinstansiasi secara langsung, melainkan harus
diwarisi terlebih dahulu oleh kelas lain. Sedangkan interface adalah sebuah kontrak
yang harus diimplementasikan oleh kelas-kelas tertentu. Dalam Kotlin, sebuah kelas
dapat mengimplementasikan beberapa interface sekaligus.

Nested Class
Kotlin juga mendukung konsep nested class, yaitu kelas yang didefinisikan di dalam
kelas lain. Nested class dapat dibuat sebagai kelas biasa atau sebagai inner class,
yang memiliki akses ke properti dan metode dari kelas induk.

Generic
Konsep generic memungkinkan kita untuk membuat kelas atau fungsi yang dapat bekerja
dengan berbagai jenis data secara fleksibel. Dalam Kotlin, generic dapat diterapkan
pada kelas, fungsi, dan tipe data.

Extension Function
Extension function memungkinkan kita untuk menambahkan fungsi baru pada tipe data
yang sudah ada, tanpa harus mengubah kode sumber tipe data tersebut. Dalam Kotlin,
kita dapat membuat extension function pada tipe data apapun, termasuk tipe data
yang sudah ada pada library Kotlin maupun Java.

Lambda Expression
Lambda expression adalah fitur yang memungkinkan kita untuk menyederhanakan
penulisan fungsi dengan menggunakan notasi pendek. Lambda expression banyak
digunakan dalam pemrograman fungsional, dan juga dapat digunakan dalam kombinasi
dengan konsep higher-order function pada Kotlin.

Itu hanya sebagian kecil dari konsep-konsep OOP lanjutan pada Kotlin yang dapat
dipelajari. Semoga bermanfaat!

Whatthefak Whatthefak
Pembahasan null safety dan contohnya
Null safety adalah konsep yang digunakan untuk mengatasi masalah nilai null pada
sebuah variabel atau objek. Pada Kotlin, setiap variabel atau objek memiliki tipe
data yang telah ditentukan. Jika sebuah variabel atau objek dideklarasikan dengan
tipe data yang dapat berisi nilai null, maka Kotlin memerlukan penggunaan
operator ? pada saat mengakses properti atau memanggil metode pada variabel atau
objek tersebut.

Contoh:

kotlin
Copy code
var name: String? = null
Pada contoh di atas, variabel name dideklarasikan dengan tipe data String?, yang
artinya variabel tersebut dapat berisi nilai null. Ketika kita ingin mengakses
properti atau memanggil metode pada variabel name, maka kita harus menggunakan
operator ?.

Contoh:

kotlin
Copy code
val length: Int? = name?.length
Pada contoh di atas, operator ? digunakan pada saat mengakses properti length pada
variabel name. Jika variabel name berisi nilai null, maka nilai yang akan
dihasilkan pada variabel length juga akan berisi nilai null.

Kotlin juga menyediakan operator !! yang dapat digunakan untuk menandakan bahwa
sebuah variabel atau objek tidak berisi nilai null. Namun, penggunaan operator !!
harus dilakukan dengan hati-hati, karena jika variabel atau objek tersebut benar-
benar berisi nilai null, maka akan terjadi NullPointerException.

Contoh:

kotlin
Copy code
val length: Int = name!!.length
Pada contoh di atas, operator !! digunakan pada saat mengakses properti length pada
variabel name. Jika variabel name berisi nilai null, maka akan terjadi
NullPointerException.

Selain itu, Kotlin juga menyediakan fitur safe call operator (?.) dan elvis
operator (?:) untuk mengatasi masalah nilai null.

Contoh:

kotlin
Copy code
val length: Int = name?.length ?: 0
Pada contoh di atas, operator ?. digunakan pada saat mengakses properti length pada
variabel name. Jika variabel name berisi nilai null, maka nilai yang akan
dihasilkan pada variabel length adalah 0.

Itulah beberapa contoh penggunaan null safety pada Kotlin. Dengan menggunakan null
safety, kita dapat memastikan bahwa aplikasi yang kita buat tidak akan mengalami
NullPointerException, sehingga dapat meningkatkan stabilitas dan kualitas aplikasi.
Whatthefak Whatthefak
Lanjutan nya apa

Setelah memahami pengertian dan contoh penggunaan null safety pada Kotlin, ada
beberapa hal lanjutan yang dapat dipelajari terkait null safety, yaitu:

Late Initialization
Pada Kotlin, kita juga dapat mendeklarasikan sebuah variabel tanpa memberikan nilai
awal. Namun, variabel tersebut harus diberikan nilai sebelum diakses. Hal ini
dikenal dengan istilah Late Initialization. Late Initialization dapat digunakan
pada variabel yang tidak dapat diinisialisasi pada saat deklarasi, seperti variabel
yang nilainya tergantung pada penggunaan fungsi atau variabel lain.

Contoh:

kotlin
Copy code
lateinit var name: String

fun setupName() {
name = "John Doe"
}

fun printName() {
println(name)
}
Pada contoh di atas, variabel name dideklarasikan dengan keyword lateinit dan tidak
diberikan nilai awal. Variabel name kemudian diinisialisasi pada fungsi
setupName(), dan kemudian nilai dari variabel name diakses pada fungsi printName().

Safe Casts
Pada Kotlin, kita juga dapat melakukan safe casts untuk memastikan bahwa sebuah
objek dapat di-casting ke tipe data yang diinginkan. Safe casts dapat digunakan
pada saat kita ingin mengubah tipe data dari sebuah objek, namun kita tidak yakin
apakah objek tersebut dapat diubah ke tipe data yang diinginkan atau tidak.

Contoh:

kotlin
Copy code
val obj: Any = "Hello"

val str: String? = obj as? String

println(str) // Output: Hello


Pada contoh di atas, variabel obj dideklarasikan dengan tipe data Any, yang berarti
objek tersebut dapat berisi tipe data apapun. Kemudian, kita melakukan safe casts
pada variabel obj dengan menggunakan operator as? untuk mengubahnya menjadi tipe
data String. Jika objek tersebut tidak dapat diubah ke tipe data String, maka nilai
dari variabel str akan menjadi null.

Non-null Assertion
Pada Kotlin, kita juga dapat menggunakan operator !! untuk menandakan bahwa sebuah
variabel atau objek tidak berisi nilai null. Operator !! digunakan pada saat kita
yakin bahwa sebuah variabel atau objek tidak berisi nilai null.

Contoh:
kotlin
Copy code
val name: String? = "John Doe"

val length: Int = name!!.length

println(length) // Output: 8
Pada contoh di atas, variabel name dideklarasikan dengan tipe data String?, yang
berarti variabel tersebut dapat berisi nilai null. Namun, pada saat kita mengakses
properti length pada variabel name, kita menggunakan operator !! untuk menandakan
bahwa variabel name tidak berisi nilai null.

Itulah beberapa hal lanjutan yang dapat dipelajari terkait null safety pada Kotlin.
Semua hal tersebut bertujuan untuk memastikan bahwa nilai null dapat diatasi dengan
baik pada saat pengembangan aplikasi, sehingga aplikasi yang dibuat menjadi lebih
stabil dan aman.

Anda mungkin juga menyukai