Menavigasi Rantaian "Dapatkan" dengan Selamat dengan Pilihan
Dalam pengaturcaraan Java, adalah perkara biasa untuk menghadapi rangkaian panggilan "dapatkan", seperti yang berikut:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
Untuk mengelakkan potensi NullPointerExceptions, pembangun selalunya menggunakan semakan null verbose:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
Pendekatan ini menjadi lebih sukar digunakan dengan rangkaian panggilan yang lebih panjang. Adakah terdapat penyelesaian yang lebih elegan?
Ya, dengan pengenalan Java 8 bagi jenis Pilihan, pengendalian null dalam rantaian get menjadi lebih mudah.
Menggunakan Pilihan untuk Pengendalian Null
Pilihan ialah kelas pembalut yang mewakili nilai pilihan. Ia boleh mengandungi nilai bukan nol atau kosong.
Untuk menggunakan Pilihan bagi pengendalian nol dalam rantaian get, kita boleh menggunakan keupayaan rantaiannya dengan kaedah map().
Pertimbangkan contoh berikut:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
Kod ini mencipta rantaian objek Pilihan, setiap satu mewakili hasil panggilan get yang sepadan.
Faedah Menggunakan Pilihan
Menggunakan Optional menawarkan beberapa faedah:
Kesimpulan
Jika anda tidak dapat mengelak daripada melanggar Hukum Demeter, menggunakan Pilihan ialah pendekatan yang sangat disyorkan untuk menavigasi rangkaian panggilan "dapatkan" dengan selamat. Ia menyediakan cara yang elegan dan cekap untuk mengendalikan null, memastikan keteguhan dan kebolehpercayaan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Jenis Pilihan Java Dapat Memudahkan Pengendalian Nulls dalam Rangkaian Panggilan 'Dapatkan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!