Menentukan Perbezaan Antara Optional.orElse() dan Optional.orElseGet()
Di Java, kelas Optional menyediakan kaedah seperti orElse( ) dan orElseGet() untuk menangani nilai yang berpotensi hilang atau batal. Memahami nuansanya adalah penting untuk penggunaan yang berkesan.
orElse() vs. orElseGet()
Bila Menggunakan orElseGet()
Contoh dengan Fungsi Dunia Sebenar
Untuk menggambarkan perbezaan, pertimbangkan fungsi berikut:
<code class="java">public Optional<String> findMyPhone(int phoneId)</code>
Senario 1: orElse()
Apabila pilihan.isPresent() == true:
When optional.isPresent() == false:
Senario 2: orElseGet()
Apabila optional.isPresent() == benar:
Apabila optional.isPresent() == false :
Contoh Kod
<code class="java">public class TestOptional { public Optional<String> findMyPhone(int phoneId) { return phoneId == 10 ? Optional.of("MyCheapPhone") : Optional.empty(); } public String buyNewExpensivePhone() { System.out.println("Going to a very far store to buy a new expensive phone"); return "NewExpensivePhone"; } public static void main(String[] args) { // Scenario 1: orElse() Optional<String> phone = findMyPhone(10).orElse(buyNewExpensivePhone()); // Scenario 2: orElseGet() phone = findMyPhone(-1).orElseGet(() -> buyNewExpensivePhone()); } }</code>
The kod menunjukkan gelagat berbeza orElse() dan orElseGet() berdasarkan kehadiran atau ketiadaan nilai pilihan.
Atas ialah kandungan terperinci Bilakah saya harus menggunakan Optional.orElseGet() dan bukannya Optional.orElse() dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!