Sobes.tech
Junior — Middle

Kāda ir atšķirība starp metodēm orElse un orElseGet Java, un kādas ir to lietošanas īpatnības?

sobes.tech AI

Atbilde no AI

Java valodā metodes orElse un orElseGet tiek izmantotas ar klasi Optional, lai iestatītu noklusējuma vērtību, ja objekts nav pieejams.

  • orElse(T other) — pieņem noklusējuma vērtību, kas tiek aprēķināta uzreiz, izsaucot metodi, neatkarīgi no tā, vai Optional satur vērtību.
  • orElseGet(Supplier<? extends T> other) — pieņem piegādātāju (funkciju), kas tiek izsaukts tikai ja vērtība trūkst, tas ir, vērtības aprēķins tiek atlikts līdz nepieciešamībai.

Lietošanas īpatnības:

  • Ja noklusējuma vērtības aprēķināšana ir dārga vai tai ir blakusparādības, labāk izmantot orElseGet, lai izvairītos no nevajadzīgiem izdevumiem.
  • Ja vērtība ir vienkārša un ātra, var izmantot orElse.

Piemērs:

Optional<String> opt = Optional.empty();

// orElse vienmēr aprēķina "default"
String result1 = opt.orElse(getDefault());

// orElseGet izsauc getDefault() tikai tad, ja opt ir tukšs
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Aprēķinām noklusējuma vērtību");
    return "default";
}