Rumah  >  Artikel  >  Java  >  Bila hendak menggunakan `Optional.orElseGet()` Daripada `Optional.orElse()`?

Bila hendak menggunakan `Optional.orElseGet()` Daripada `Optional.orElse()`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 00:32:03153semak imbas

 When to Use `Optional.orElseGet()` Over `Optional.orElse()`?

Perbezaan antara Optional.orElse() dan Optional.orElseGet()

Kelas Pilihan dalam Java menyediakan kaedah mudah untuk mengendalikan dan mengembalikan nilai yang mungkin atau mungkin tidak hadir. Dua kaedah penting dalam kelas ini ialah orElse() dan orElseGet(). Perbezaan utama antara kaedah ini terletak pada masa apabila nilai sandaran atau pengiraan digunakan.

orElse()

Kaedah orElse() mengambil nilai lalai sebagai hujah dan mengembalikannya nilai jika contoh Pilihan kosong. Ia tidak menunggu isPresent() untuk dinilai, tetapi dengan serta-merta menilai dan mengembalikan nilai sandaran yang disediakan, walaupun contoh Pilihan tidak kosong.

orElseGet()

Sebaliknya, kaedah orElseGet() mengambil antara muka Pembekal sebagai hujah, membolehkan anda mentakrifkan pengiraan yang hanya berjalan apabila tika Pilihan kosong. Pendekatan ini lebih cekap apabila nilai sandaran mahal untuk dikira dan hanya perlu dilakukan apabila perlu.

Bila Menggunakan orElseGet() Over orElse()

Pertimbangkan untuk menggunakan orElseGet() dan bukannya orElse() dalam senario berikut:

  • Pengoptimuman Prestasi: orElseGet() memastikan bahawa pengiraan sandaran hanya dilakukan apabila diperlukan, meningkatkan prestasi jika pengiraan sandaran adalah intensif sumber .
  • Pengendalian Pengecualian: Jika pengiraan sandaran boleh membuang pengecualian, orElseGet() membenarkan anda membungkusnya dengan cara yang lebih terkawal, mengelakkan sebarang pengecualian yang tidak dijangka daripada dilemparkan.
  • Kebolehbacaan Kod: Menggunakan orElseGet() dengan Pembekal deskriptif boleh meningkatkan kebolehbacaan kod dengan menunjukkan apabila pengiraan sandaran sedang dilaksanakan.

Penggunaan Contoh

Pertimbangkan contoh berikut:

<code class="java">Optional<String> optional = Optional.ofNullable("Hello");

// Always computes the fallback value.
String result1 = optional.orElse("World");

// Computes the fallback value only if the optional is empty.
String result2 = optional.orElseGet(() -> {
   // Expensive computation here
   return "World";
});</code>

Dalam contoh ini, result1 akan sentiasa mengandungi "Dunia" kerana nilai sandaran dinilai tanpa mengira pilihan yang ada. Sebaliknya, result2 hanya akan diberikan "Dunia" jika pilihan kosong, membolehkan prestasi yang lebih baik apabila pengiraan mahal.

Atas ialah kandungan terperinci Bila hendak menggunakan `Optional.orElseGet()` Daripada `Optional.orElse()`?. 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