Perbezaan antara Optional.orElse() dan Optional.orElseGet()
Kelas Optional menyediakan kaedah seperti orElse() dan orElseGet() untuk mendapatkan semula nilai daripada Pilihan jika ia ada, atau berikan nilai lalai jika ia kosong. Walau bagaimanapun, terdapat perbezaan yang ketara dalam tingkah laku mereka:
Bila Menggunakan orElseGet()
Perbezaan utama ialah orElseGet() menangguhkan pelaksanaan fungsi perolehan nilai lalai sehingga ia diperlukan, manakala orElse() sentiasa melaksanakan fungsi tersebut. Ini boleh menjadi penting dalam situasi di mana mendapatkan nilai lalai ialah operasi yang mahal atau memakan masa yang anda hanya mahu lakukan jika perlu.
Contoh:
Pertimbangkan senario di mana anda perlu mencari sumber (diwakili oleh Pilihan) dan mendapatkan semula nilainya, atau memberikan nilai lalai. Jika mendapatkan nilai lalai memerlukan pertanyaan pangkalan data yang mahal, anda ingin menggunakan orElseGet() untuk mengelakkan pertanyaan apabila sumber itu ada.
<code class="java">Optional<Resource> resource = findResource(); Resource result = orElseGet(() -> getExpensiveDefaultValue());</code>
Nota Tambahan:
Kesimpulan:
orElseGet() menyediakan cara untuk menangguhkan pelaksanaan nilai lalai fungsi mendapatkan semula sehingga diperlukan, membenarkan pengoptimuman prestasi dalam kes di mana mendapatkan nilai lalai adalah mahal atau tidak diingini apabila Pilihan tidak kosong.
Atas ialah kandungan terperinci Bilakah anda harus menggunakan Optional.orElseGet() dan bukannya Optional.orElse()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!