Sobes.tech
Junior — Middle

Jaký je rozdíl mezi metodami orElse a orElseGet v Javě, a jaké jsou jejich vlastnosti při použití?

sobes.tech AI

Odpověď od AI

V Javě se metody orElse a orElseGet používají s třídou Optional k nastavení výchozí hodnoty, pokud objekt chybí.

  • orElse(T other) — přijímá výchozí hodnotu, která je vypočítána ihned při volání metody, bez ohledu na to, zda je v Optional hodnota.
  • orElseGet(Supplier<? extends T> other) — přijímá dodavatele (funkci), který je volán pouze pokud hodnota chybí, tedy výpočet hodnoty je odložen do doby, kdy je potřeba.

Použití:

  • Pokud je výpočet výchozí hodnoty nákladný nebo má vedlejší účinky, je lepší použít orElseGet, aby se předešlo zbytečným nákladům.
  • Pokud je hodnota jednoduchá a rychlá, lze použít orElse.

Příklad:

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

// orElse vždy vypočítá "default"
String result1 = opt.orElse(getDefault());

// orElseGet zavolá getDefault() pouze pokud je opt prázdný
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Výpočet výchozí hodnoty");
    return "default";
}