Ambil dua contoh kode:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
Sejauh yang saya tahu perbedaan yang paling jelas adalah bahwa Opsional membutuhkan pembuatan objek tambahan.
Namun, banyak orang sudah mulai mengadopsi Opsional dengan cepat. Apa keuntungan menggunakan opsional dibandingkan cek nol?
if
pernyataannya sangaaaat dekade terakhir, dan semua orang menggunakan abstraksi monad dan lambda sekarang.
if(x.isPresent) fails_on_null(x.get)
Anda keluar dari sistem tipe dan harus menjaga jaminan bahwa kode tidak akan memecahkan "di kepala Anda" selama jarak (diakui pendek) antara kondisi dan pemanggilan fungsi. Dalam optional.ifPresent(fails_on_null)
tipe sistem membuat jaminan ini untuk Anda, dan Anda tidak perlu khawatir.
Optional.ifPresent
(dan berbagai konstruksi Java lainnya) adalah Anda hanya dapat memodifikasi variabel final secara efektif dan tidak dapat membuang pengecualian yang diperiksa. Itulah alasan yang cukup sering dihindari ifPresent
, sayangnya.