Junior — Middle
Care este diferența dintre metodele orElse și orElseGet în Java și care sunt caracteristicile lor de utilizare?
sobes.tech AI
Răspuns de la AI
În Java, metodele orElse și orElseGet sunt utilizate cu clasa Optional pentru a atribui o valoare implicită dacă obiectul lipsește.
orElse(T other)— acceptă o valoare implicită care este calculată imediat la apelarea metodei, indiferent dacă există sau nu o valoare înOptional.orElseGet(Supplier<? extends T> other)— acceptă un furnizor (funcție) care este apelat numai dacă valoarea lipsește, adică calculul valorii este amânat până când este necesar.
Caracteristici de utilizare:
- Dacă calculul valorii implicite este costisitor sau are efecte secundare, este mai bine să folosiți
orElseGetpentru a evita costuri inutile. - Dacă valoarea este simplă și rapidă, se poate folosi
orElse.
Exemplu:
Optional<String> opt = Optional.empty();
// orElse întotdeauna calculează "default"
String result1 = opt.orElse(getDefault());
// orElseGet apelează getDefault() doar dacă opt este gol
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Calculăm valoarea implicită");
return "default";
}