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 vOptionalhodnota.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";
}