Java - Kelas Optional: Panduan untuk Pemula
Helo di sana, pemaju Java masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia kelas Optional Java. Jangan khawatir jika anda belum pernah menulis satu baris kod sebelum ini – saya akan menjadi pemandu anda yang mesra, dan kita akan melakukannya langkah demi langkah. Pada akhir tutorial ini, anda akan menguruskan nilai null seperti profesional!
Apa itu Kelas Optional?
Sebelum kita kembali, mari kita mula dengan cerita kecil. Bayangkan anda menunggu paket. Kadang-kadang itu tiba, kadang-kadang tidak. Dalam dunia Java, kita sering menghadapi situasi yang serupa dengan data kita – kadang-kadang itu ada, kadang-kadang tidak. Ini adalah di mana kelas Optional menyelamatkan kita!
Kelas Optional, yang diperkenalkan dalam Java 8, adalah seperti wadah khusus yang mungkin atau tidak mengandungi nilai non-null. Ini adalah cara untuk mewakili nilai opsional sebagai ganti dari referensi null. percayalah, kelas ini kecil akan menyelamatkan anda dari banyak sakit kepala dan kesalahan potensial dalam kod anda!
Mengapa Kita Perlu Optional?
Anda mungkin berfikir, "Mengapa kita tidak hanya menggunakan null?" Walau bagaimanapun, pelajar saya yang dihargai, null bisa menjadi masalah. Ini bisa membawa kepada NullPointerException yang dikhawatirkan, yang seperti secara kebetulan menginjak atas rakit LEGO di atas gelap – sakit dan tak dijangka!
Optional membantu kita menguruskan situasi ini dengan lebih halus. Ini memaksa kita untuk berfikir tentang kemungkinan nilai yang hilang dan menguruskan mereka secara eksplisit.
Membuat Optional
Mari kita mula dengan membuat Optional objek pertama kita. Ada beberapa cara untuk melakukan ini:
// Membuat Optional kosong
Optional<String> kosong = Optional.empty();
// Membuat Optional dengan nilai non-null
String nama = "Alice";
Optional<String> optionalNama = Optional.of(nama);
// Membuat Optional yang mungkin atau tidak mengandungi nilai null
String namaBolehNull = null;
Optional<String> optionalBolehNull = Optional.ofNullable(namaBolehNull);
Dalam contoh ini, kita telah membuat tiga jenis objek Optional yang berbeda. Yang pertama adalah kosong, yang kedua mengandungi nilai pasti, dan yang ketiga mungkin atau tidak mengandungi nilai.
Memeriksa jika Nilai Ada
Sekarang kita memiliki objek Optional kita, mari kita lihat bagaimana kita dapat memeriksa jika mereka sebenarnya mengandungi nilai:
Optional<String> optionalNama = Optional.of("Bob");
if (optionalNama.isPresent()) {
System.out.println("Nama ada: " + optionalNama.get());
} else {
System.out.println("Nama tidak ada");
}
Di sini, kita menggunakan metode isPresent()
untuk memeriksa jika Optional mengandungi nilai, dan metode get()
untuk mengambil nilai tersebut. Tetapi hati-hati! Menggunakan get()
pada Optional kosong akan melemparkan pengecualian. Itu seperti mencoba untuk menarik rakit kelinci dari atas topi kosong – itu hanya tidak akan bekerja!
Menggunakan Nilai Default
Kadang-kadang, kita ingin menggunakan nilai default jika Optional kita kosong. Java membuat ini sangat mudah:
String nama = Optional.ofNullable(namaBolehNull).orElse("Tidak Diketahui");
System.out.println("Nama: " + nama);
Dalam contoh ini, jika namaBolehNull
adalah null, variabel nama
kita akan diatur ke "Tidak Diketahui". Itu seperti memiliki rencana cadangan – selalu merupakan ide baik!
Mengubah Nilai dengan map()
Kelas Optional juga memungkinkan kita untuk mengubah nilai menggunakan metode map()
. Mari lihat ini dalam aksi:
Optional<String> namaUppercase = Optional.of("alice").map(String::toUpperCase);
System.out.println(namaUppercase.orElse("Tidak ada nama ditemukan"));
Kode ini mengambil nama "alice", mengubahnya menjadi huruf besar, dan membungkusnya dalam Optional baru. Jika Optional asli telah kosong, hasilnya juga akan menjadi Optional kosong.
Mengikat Operasi Optional
Satu dari hal yang paling keren tentang Optional adalah bahwa kita dapat mengikat operasi bersama-sama. Itu seperti membangun dengan rakit LEGO – setiap bagian menyambung untuk menciptakan sesuatu yang menakjubkan:
Optional<String> nama = Optional.of("Alice")
.filter(s -> s.length() > 5)
.map(String::toUpperCase);
System.out.println(nama.orElse("Nama tidak cukup panjang"));
Dalam contoh ini, kita mula dengan "Alice", memeriksa jika itu lebih panjang dari 5 karakter (itu tidak), jadi hasilnya adalah Optional kosong. Jika nama telah cukup panjang, itu akan diubah menjadi huruf besar.
Mengirim Pengecualian dengan Optional
Kadang-kadang, saat nilai hilang, kita ingin mengirim pengecualian. Optional membuat ini mudah juga:
String hasil = Optional.ofNullable(namaBolehNull)
.orElseThrow(() -> new IllegalArgumentException("Nilai tidak boleh null"));
Kode ini akan melemparkan IllegalArgumentException dengan pesan kostum jika namaBolehNull
adalah null.
Metode Kelas Optional
Mari ringkaskan beberapa metode Optional yang paling berguna dalam tabel yang praktis:
Metode | Deskripsi |
---|---|
empty() | Mengembalikan instance Optional kosong |
of(T value) | Mengembalikan Optional dengan nilai non-null yang ditentukan |
ofNullable(T value) | Mengembalikan Optional yang menggambarkan nilai yang diberikan, jika non-null, jika tidak mengembalikan Optional kosong |
isPresent() | Mengembalikan true jika nilai hadir, jika tidak false |
ifPresent(Consumer<? super T> action) | Melakukan tindakan yang diberikan dengan nilai jika hadir |
get() | Mengembalikan nilai jika hadir, jika tidak melemparkan NoSuchElementException |
orElse(T other) | Mengembalikan nilai jika hadir, jika tidak mengembalikan other |
orElseGet(Supplier<? extends T> supplier) | Mengembalikan nilai jika hadir, jika tidak memanggil supplier dan mengembalikan hasilnya |
orElseThrow(Supplier<? extends X> exceptionSupplier) | Mengembalikan nilai jika hadir, jika tidak melemparkan pengecualian yang dihasilkan oleh supplier pengecualian |
map(Function<? super T, ? extends U> mapper) | Jika nilai hadir, mengembalikan Optional yang menggambarkan hasil dari menerapkan fungsi pemetaan yang diberikan ke nilai, jika tidak mengembalikan Optional kosong |
flatMap(Function<? super T, ? extends Optional<? extends U>> mapper) | Mirip dengan map, tetapi fungsi pemetaan mengembalikan Optional |
filter(Predicate<? super T> predicate) | Jika nilai hadir dan sesuai dengan predikat yang diberikan, mengembalikan Optional yang menggambarkan nilai, jika tidak mengembalikan Optional kosong |
Kesimpulan
Selamat! Anda baru saja melakukan langkah pertama Anda ke dunia kelas Optional Java. Ingat, Optional bukan hanya alat, itu adalah cara berfikir. Ini mengajurkan Anda untuk mempertimbangkan kemungkinan nilai yang hilang dan menguruskan mereka dengan halus.
Sebagai Anda melanjutkan perjalanan Java Anda, Anda akan menemukan Optional muncul di banyak tempat. Embrasinya! Itu seperti sekutu yang setia, selalu ada untuk membantu Anda menguruskan situasi null yang tricky.
Terus praktikkan, terus coding, dan yang paling penting, teruslah bersenang-senang! Java adalah dunia yang luas dan menarik, dan Anda hanya menggosok permukaannya. Siapa tahu apa yang menakjubkan yang Anda akan ciptakan dengan pengetahuan baru Anda?
Sampai jumpa lagi, happy coding!
Credits: Image by storyset