Rumah  >  Artikel  >  Java  >  Menguasai Pilihan Java: Panduan Komprehensif dengan Contoh

Menguasai Pilihan Java: Panduan Komprehensif dengan Contoh

WBOY
WBOYasal
2024-08-23 18:01:02869semak imbas

Pengenalan: Menangani Teka-teki Null

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.

Asas: Memahami Pilihan

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.

Mastering Java

Mastering Java

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

Mastering Java

Kini, ini lebih baik! Mari kita lihat perubahan yang telah kita lakukan.

Pertama, perhatikan bahawa kaedah findStudent kami kini mengembalikan Pilihan bukannya hanya Pelajar. Ini adalah isyarat yang jelas kepada sesiapa yang menggunakan kaedah ini bahawa ia mungkin tidak selalu mencari pelajar.

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.

Teknik Perantaraan: Memanfaatkan Kuasa Pilihan

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()

Mastering Java

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 dan mengubahnya menjadi Pilihan mengandungi nama huruf besar pelajar. Jika tiada pelajar ditemui, upperCaseName hanya akan menjadi Pilihan kosong.

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()

Mastering Java

Mastering Java

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:

Mastering Java

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>), yang bukan yang kami mahukan. flatMap() "meratakan" ini untuk kami, memberikan kami Pilihan yang mudah.

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.

Teknik Lanjutan: Menguasai Pilihan

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

Mastering Java

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

Mastering Java

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. Kami kemudian menggunakan ifPresent untuk mencetak keputusan hanya jika pelajar ditemui.

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:

  • Teknik Pengaturcaraan Berorientasikan Objek Lanjutan
  • Selami lebih dalam Koleksi dan Generik
  • Menguasai Pengendalian Pengecualian
  • Dan banyak lagi!

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

  • Jalankan contoh sendiri
  • Terokai kes penggunaan tambahan
  • Sumbangkan penyelesaian anda sendiri

Bintangkan repositori untuk menunjukkan sokongan anda dan kekal dikemas kini dengan contoh baharu!

? Ambilan Utama

Ingat perkara penting ini tentang Pilihan:

  1. Gunakannya untuk mengendalikan nilai yang berpotensi tidak hadir secara eksplisit
  2. Leverage map(), flatMap() dan filter() untuk kod yang lebih bersih
  3. Sepadukan dengan strim untuk pemprosesan data yang berkuasa
  4. Sentiasa mengendalikan kedua-dua kes yang ada dan tidak hadir

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn