Optional

Jika anda sudah biasa dengan Java, anda akan faham satu benda yang agak menyusahkan ialah null. Kadang-kadang kita terlupa untuk check null dan program akan terpadam dan mengeluarkan exception. Lalu, kita pun tambah code untuk check null,

Integer num = null;  // bayangkan dari database

if (num != null) {
    System.out.println(num);
}

Pattern di atas seperti tidak selari dengan penggunaan method stream seperti map, filter, dan reduce. Jadi, Java 8 menyediakan class Optional. Dengan menggunakan class Optional, kita boleh menukar code di atas ke,

Integer num = null;  // bayangkan dari database

Optional.ofNullable(num)
        .ifPresent(System.out::println);

Class Optional juga mempunyai method map dan filter yang mempunyai fungsi yang sama dengan method stream. Kita boleh menganggap Optional seperti data structure untuk satu nilai. Dalam functional programming, konsep ini dinamakan Monad.

Sebelum ini pun kita ada menggunakan optional, iaitu pada code,

double taxAverage = taxes.stream()
        .mapToDouble(x -> x)
        .average()
        .orElse(0.0);

Code ini bermaksud jika tiada average, maka letakkan 0.0. Seperti code tersebut, kita boleh menggunakan method orElse untuk mendapatkan data jika bukan null. Jika null, gunakan nombor default yang diletakkan sebagai argument.

Satu lagi method untuk mengambil data ialah get(), tetapi sebaik-baiknya elak dari menggunakan method tersebut. Guna sahaja method orElse supaya code lebih selamat.

Website ini menggunakan cookie yang dikendalikan oleh pihak ketiga. Anda boleh membaca dengan lebih lanjut di sini. Dengan menggunakan website ini, anda bersetuju dengan penggunaan cookie tersebut.

Setuju