Sebagai pembangun Java, kita semua telah menemui NullPointerException (NPE) yang terkenal. Ia seperti tetamu yang tidak diundang di sebuah parti, muncul apabila tidak dijangka dan menyebabkan pelbagai masalah. Tetapi jangan takut! Java 8 memperkenalkan alat berkuasa untuk membantu kami menangani gangguan ini: kelas Pilihan.
Dalam panduan ini, kami akan meneroka Pilihan melalui satu siri contoh praktikal. Kami akan bermula dengan asas-asas dan meneruskan ke arah teknik yang lebih maju. Pada akhirnya, anda akan mempunyai pemahaman yang kukuh tentang cara menggunakan Pilihan untuk menulis kod Java yang lebih selamat dan lebih ekspresif.
Mari kita mulakan dengan melihat senario biasa: mencari pelajar dalam senarai. Mula-mula kita akan melihat pendekatan tradisional, dan kemudian kita akan melihat cara Pilihan boleh menambah baik kod kami.
Mari kita pecahkan perkara ini. Dalam TraditionalStudentFinder kami, kami menggunakan corak biasa: mengembalikan null apabila kami tidak menemui apa yang kami cari. Nampaknya cukup tidak bersalah, tetapi ia sebenarnya bom jangka yang berdetik dalam kod kami.
Masalah timbul apabila kita cuba menggunakan hasilnya. Lihat kaedah utama. Kami sedang mencari "David", yang tiada dalam senarai kami. Apabila kami cuba mencetak nama pelajar yang ditemui, boom! Kami mendapat NullPointerException.
Punca isu ialah tandatangan kaedah findStudent kami tidak memberikan sebarang petunjuk bahawa ia mungkin tidak mengembalikan pelajar. Terlalu mudah untuk terlupa menyemak nol, yang membawa kepada ralat masa jalan yang sukar untuk dikesan.
Sekarang, mari lihat bagaimana kita boleh menambah baik ini menggunakan Pilihan.
Contoh 2: Memperkenalkan Pilihan
Kini, ini lebih baik! Mari kita lihat perubahan yang telah kita lakukan.
Pertama, perhatikan bahawa kaedah findStudent kami kini mengembalikan Pilihan
Di dalam kaedah, kami menggunakan Optional.of(s) untuk membalut pelajar apabila kami menemuinya, dan Optional.empty() apabila kami tidak. Ini secara jelas mewakili dua kemungkinan hasil carian kami.
Keajaiban sebenar berlaku dalam kaedah utama. Kami menggunakan kaedah ifPresentOrElse untuk mengendalikan kedua-dua kes: apabila pelajar ditemui dan apabila mereka tidak. Tiada lagi NullPointerException!
Pendekatan ini memaksa kami untuk mempertimbangkan kes di mana pelajar mungkin tidak ditemui. Ia menjadikan kod kami lebih mantap dan mendokumentasikan diri. Sesiapa yang membaca kod ini serta-merta memahami bahawa mencari pelajar tidak dijamin.
Sekarang kita telah mengetahui asasnya, mari kita terokai beberapa ciri lanjutan Pilihan. Teknik ini akan membantu anda menulis kod yang lebih bersih dan lebih ekspresif.
Contoh 3: Mengubah Nilai dengan map()
Dalam contoh ini, kami memperkenalkan kaedah map() Pilihan. Fikirkan map() sebagai cara untuk mengubah kandungan Pilihan tanpa perlu risau sama ada ia kosong atau tidak.
Pertama, perhatikan cara kami telah memudahkan kaedah findStudent kami menggunakan strim. Ini ialah cara yang lebih ringkas untuk mencipta Pilihan
Bahagian yang menarik ialah cara kami menggunakan map(). Kami mengambil Pilihan
Ini hebat kerana ia membolehkan kami merantai operasi dengan cara yang selamat. Kami boleh mengubah kandungan Pilihan tanpa semakan nol yang jelas atau pernyataan if.
Akhir sekali, kami menggunakan ifPresent() untuk mencetak nama huruf besar hanya jika ia wujud. Corak map() ini diikuti oleh ifPresent() adalah sangat biasa apabila bekerja dengan Pilihan.
Contoh 4: Operasi Rangkaian dengan flatMap()
Kini kami menerokai wilayah yang lebih kompleks dengan flatMap(). Kaedah ini amat berguna apabila anda mempunyai rangkaian operasi yang masing-masing mengembalikan Pilihan.
Dalam contoh ini, kami cuba mencari tajuk kursus yang didaftarkan oleh pelajar. Perhatikan bagaimana kami mempunyai dua kaedah yang mengembalikan Pilihan: findStudent() dan getEnrolledCourse().
Keajaiban berlaku dalam baris ini:
Kita mulakan dengan mencari pelajar. Jika kami menemui satu, kami kemudian mencari kursus yang didaftarkan. Jika kita jumpa kursus, kita dapat tajuknya. Pada bila-bila masa dalam rantaian ini, jika kami tidak menemui apa yang kami cari, kami akan mendapat Pilihan yang kosong.
Mengapa menggunakan flatMap() dan bukannya map()? Jika kami menggunakan map(), kami akan mendapat Pilihan bersarang (Pilihan
Corak ini sangat berkuasa untuk menangani rangkaian operasi di mana setiap langkah mungkin tidak membuahkan hasil. Ia membolehkan kami menyatakan operasi yang kompleks dengan cara yang sangat bersih dan boleh dibaca.
Sambil kita mendalami Pilihan, kami akan meneroka beberapa teknik yang lebih maju yang akan membantu anda menulis kod yang lebih mantap dan ekspresif.
Contoh 5: Menggabungkan Pelbagai Pilihan
Dalam contoh lanjutan ini, kami sedang bekerja dengan berbilang objek Pilihan. Kami mempunyai kaedah calculateAverageGrade yang mengambil dua parameter Pilihan dan mengembalikan Pilihan
Kuncinya di sini ialah cara kami merantai operasi flatMap untuk mengendalikan kedua-dua input Pilihan. Ini memastikan bahawa gred purata hanya dikira jika pelajar dan kursus hadir. Jika salah satu tiada, kami akan mendapat Pilihan kosong.
Corak ini amat berguna apabila anda perlu melakukan operasi yang bergantung pada berbilang nilai pilihan. Ia membolehkan anda mengendalikan semua kemungkinan kombinasi kehadiran/ketiadaan dalam gaya yang bersih dan berfungsi.
Contoh 6: Menggunakan Pilihan dalam Strim
Contoh ini mempamerkan cara Pilihan menyepadukan dengan lancar dengan strim Java. Kami menjalankan dua operasi di sini:
Mengira purata umur pelajar melebihi 20 tahun.
Mencari pelajar tertua.
Dalam operasi pertama, kami menggunakan orElse(0.0) untuk memberikan nilai lalai jika tiada pelajar melebihi 20 tahun ditemui. Ini adalah corak biasa apabila bekerja dengan hasil Pilihan daripada operasi strim.
Untuk mencari pelajar tertua, kami menggunakan reduce untuk membandingkan pelajar, yang mengembalikan Pilihan
Contoh ini menunjukkan cara Pilihan boleh digunakan dengan berkesan dalam senario yang lebih kompleks, terutamanya apabila bekerja dengan strim dan apabila berurusan dengan berbilang nilai pilihan.
Kesimpulan: Menerima Pilihan untuk Kod Lebih Selamat
Kami telah mengembara daripada asas Pilihan kepada beberapa penggunaannya yang lebih maju. Pada masa ini, anda seharusnya melihat bahawa Pilihan bukan sekadar penggantian semakan nol—ia merupakan alat yang berkuasa untuk menulis kod Java yang lebih ekspresif dan lebih selamat.
Ingat, matlamat Pilihan bukan hanya untuk mengelakkan semakan batal, tetapi untuk memaksa kita memikirkan dan mengendalikan kes yang mungkin tiada nilai. Ia menjadikan API kami lebih jujur dan kod kami lebih mantap.
Sambil anda meneruskan perjalanan Java anda, simpan Pilihan dalam kit alat anda. Gunakannya apabila mengembalikan nilai yang mungkin tidak selalu ada, dan manfaatkan kaedahnya untuk menulis kod gaya yang lebih bersih dan lebih berfungsi. Diri masa depan anda (dan rakan sepasukan) akan berterima kasih kepada anda apabila mereka menghadapi lebih sedikit NullPointerExceptions dan lebih banyak kod yang boleh dijelaskan sendiri.
Menguasai Java Pilihan: Langkah Anda Seterusnya
Tahniah! Anda baru sahaja meningkatkan kemahiran Java anda dengan mempelajari tentang Pilihan. Tetapi mengapa berhenti di sini? Mari tingkatkan kepakaran Java anda ke tahap yang lebih tinggi!
? Kursus Penguasaan Java Teras Percuma
Bersedia untuk menjadi Java pro? Kursus Core Java kami yang komprehensif ialah tiket anda untuk berjaya - dan ianya percuma sepenuhnya!
Klik Di Sini untuk Memulakan Perjalanan Java Anda
Dalam kursus ini, anda akan belajar:
Jangan lepaskan peluang ini untuk mengubah kemahiran Java anda. Beribu-ribu pembangun telah pun mendapat manfaat - anda mungkin seterusnya!
? Amalan Tangan: Repositori GitHub
Teori sangat bagus, tetapi amalan membuat sempurna. Kami telah menyediakan repositori GitHub dengan semua contoh kod daripada tutorial ini, serta cabaran tambahan untuk mengukuhkan pembelajaran anda.
Akses Repositori Tutorial Pilihan Java
Bintangkan repositori untuk menunjukkan sokongan anda dan kekal dikemas kini dengan contoh baharu!
? Ambilan Utama
Ingat perkara penting ini tentang Pilihan:
Pilihan bukan hanya tentang semakan nol - ia adalah laluan anda ke kod Java yang lebih mantap dan ekspresif.
Bersedia untuk meneruskan penguasaan Java anda? Klik pautan kursus di atas dan mulakan pengekodan seperti profesional hari ini!
Selamat pengekodan, dan jumpa anda dalam kursus! ?????
Atas ialah kandungan terperinci Menguasai Pilihan Java: Panduan Komprehensif dengan Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!