Rumah  >  Artikel  >  Java  >  Ralat Java: Ralat Pilihan Java8, Cara Mengendalikan dan Mengelak

Ralat Java: Ralat Pilihan Java8, Cara Mengendalikan dan Mengelak

PHPz
PHPzasal
2023-06-25 14:29:081474semak imbas

Java8 Optional ialah ciri yang sangat praktikal dalam Java SE 8, digunakan untuk mengoptimumkan kemungkinan NullPointerExceptions dalam aplikasi Java.

Pilihan sering digunakan dalam aplikasi Java kerana ia menyediakan cara yang selamat untuk mengendalikan nilai nol. Walaupun Pilihan memberikan banyak kemudahan, jika anda tidak menggunakannya dengan berhati-hati, beberapa ralat mungkin berlaku.

Artikel ini akan memperkenalkan ciri Java8 Optional dan cara mengendalikan serta mengelakkan ralat Java8 Optional.

Ciri Java8 Pilihan

Java8 Ciri pilihan boleh digunakan dalam ArrayList, Jadual, Peta dan Strim. Kelas atau kaedah yang dibalut dengan Pilihan boleh mengendalikan nilai nol atau pengecualian nol dengan lebih baik, dengan ketara mengurangkan bilangan pengecualian NullPointerException.

Berikut ialah contoh penggunaan Java8 Pilihan:

Optional<String> name = Optional.ofNullable("John");
System.out.println("Name: " + name.orElse("Default Name"));

Dalam contoh di atas, kami membalut nama pembolehubah rentetan dalam objek Pilihan dan mengeluarkan nilainya jika pembolehubah wujud, jika tidak, keluarkan "Nama Lalai". Pendekatan ini memastikan bahawa program tidak ranap apabila pengecualian penuding nol berlaku.

Ralat biasa dalam Java8 Optional

Apabila menggunakan Java8 Optional, ralat biasa berikut mungkin berlaku:

  1. Apabila kaedah get() digunakan untuk mengakses objek Pilihan dan objek kosong, pengecualian NoSuchElementException akan dilemparkan.
  2. Gunakan kaedah isPresent() Optional untuk menyemak sama ada objek Pilihan mengandungi nilai nol Jika ya, tingkah laku lalai kaedah orElse() atau orElseGet() ini biasanya bukan penyelesaian terbaik.
  3. Kaedah orElse() Optional hanya mengembalikan nilai lalai dan tidak menciptanya. Jika nilai Lalai ialah nilai yang dijana secara dinamik, anda boleh menggunakan kaedah orElseGet() dan masukkan Pembekal dalam orElse(), dan Pembekal hanya akan dipanggil apabila diperlukan.

Cara mengendalikan dan mengelakkan ralat Pilihan Java8

Berikut adalah beberapa cadangan tentang cara mengendalikan dan mengelakkan ralat Pilihan Java8:

  1. Sebelum menggunakan kaedah get(), pastikan anda menggunakan kaedah isPresent() untuk menyemak sama ada objek Pilihan wujud.
  2. Jangan gunakan kaedah isPresent() dan kaedah orElse(). Sebaliknya, anda harus menggunakan kaedah orElseGet() untuk membenarkan program melaksanakan Pembekal hanya apabila diperlukan.
Optional<String> name = Optional.ofNullable(null);
System.out.println("Name: " + name.orElseGet(() -> "Default Name"));
  1. Jangan gunakan Pilihan sebagai parameter medan kelas atau kaedah. Ini boleh membawa kepada kelas atau kaedah yang menjadi berantakan dan sukar untuk diselenggara. Gunakan Pilihan untuk nilai pulangan apabila mungkin, dan hanya gunakannya untuk parameter apabila diperlukan.
  2. Elakkan menggunakan Pilihan dalam kaedah rekursif. Rekursi dalam Java adalah ringkas dan jelas, tetapi menggunakan Pilihan dalam kaedah rekursif akan menyebabkan penurunan ketara dalam prestasi program.

Kesimpulan

Java8 Pilihan ialah ciri yang sangat berkuasa yang boleh membantu pembangun Java mengendalikan kemungkinan pengecualian nilai null atau null dengan lebih baik. Apabila menggunakan Java8 Optional, anda perlu mengikut ketat amalan dan prinsip terbaik yang berkaitan untuk mengelakkan kesilapan biasa dan dengan itu meningkatkan prestasi aplikasi dan kebolehselenggaraan.

Atas ialah kandungan terperinci Ralat Java: Ralat Pilihan Java8, Cara Mengendalikan dan Mengelak. 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