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ā, vaiOptionalsatur 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";
}