Sobes.tech
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 v Optional hodnota.
  • 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";
}