Junior — Middle
Aký je rozdiel medzi metódami orElse a orElseGet v Jave a aké sú ich vlastnosti používania?
sobes.tech AI
Odpoveď od AI
V Jave sa metodami orElse a orElseGet sa triedou Optional sačinjavamo podrazumevanu hodnotu, ak objekt chýba.
orElse(T other)— prijíma predvolenú hodnotu, ktorá sa vypočíta okamžite pri volaní metódy, bez ohľadu na to, či je vOptionalhodnota.orElseGet(Supplier<? extends T> other)— prijíma dodávateľa (funkciu), ktorý sa volá len ak hodnota chýba, teda výpočet hodnoty sa odkladá, kým nebude potrebný.
Použitie:
- Ak je výpočet predvolenej hodnoty nákladný alebo má vedľajšie účinky, je lepšie použiť
orElseGet, aby sa predišlo zbytočným nákladom. - Ak je hodnota jednoduchá a rýchla, môže sa použiť
orElse.
Príklad:
Optional<String> opt = Optional.empty();
// orElse vždy vypočíta "default"
String result1 = opt.orElse(getDefault());
// orElseGet zavolá getDefault() len ak je opt prázdny
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Výpočet predvolenej hodnoty");
return "default";
}