Sobes.tech
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 în Optional.
  • 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 orElseGet pentru 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";
}