Junior — Middle
Jaka jest różnica między metodami orElse i orElseGet w Java, i jakie są ich cechy użytkowania?
sobes.tech AI
Odpowiedź od AI
W Javie metody orElse i orElseGet są używane z klasą Optional do ustawiania wartości domyślnej, jeśli obiekt jest nieobecny.
orElse(T other)— przyjmuje wartość domyślną, która jest obliczana od razu podczas wywołania metody, niezależnie od tego, czy wOptionaljest wartość.orElseGet(Supplier<? extends T> other)— przyjmuje dostawcę (funkcję), który jest wywoływany tylko jeśli wartość jest nieobecna, czyli obliczenie wartości jest odłożone do momentu, gdy będzie to konieczne.
Cechy użytkowania:
- Jeśli obliczenie wartości domyślnej jest kosztowne lub ma efekty uboczne, lepiej używać
orElseGet, aby uniknąć niepotrzebnych kosztów. - Jeśli wartość jest prosta i szybka, można użyć
orElse.
Przykład:
Optional<String> opt = Optional.empty();
// orElse zawsze oblicza "default"
String result1 = opt.orElse(getDefault());
// orElseGet wywołuje getDefault() tylko jeśli opt jest pusty
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Obliczanie wartości domyślnej");
return "default";
}