Sobes.tech
Junior — Middle

Kuo skiriasi orElse ir orElseGet metodai Java, ir kokios jų naudojimo ypatybės?

sobes.tech AI

Atsakymas iš AI

Java kalboje metodai orElse ir orElseGet naudojami su klase Optional nustatyti numatytąją reikšmę, jei objektas nėra.

  • orElse(T other) — priima numatytąją reikšmę, kuri apskaičiuojama iškart kviečiant metodą, nepriklausomai nuo to, ar Optional yra reikšmė.
  • orElseGet(Supplier<? extends T> other) — priima tiekėją (funkciją), kuris yra kviečiamas tik jei reikšmė trūksta, t.y., reikšmės skaičiavimas atidedamas iki būtinybės.

Naudojimo ypatumai:

  • Jei numatytosios reikšmės skaičiavimas yra brangus arba turi šalutinių efektų, geriau naudoti orElseGet, kad išvengtumėte nereikalingų išlaidų.
  • Jei reikšmė paprasta ir greita, galima naudoti orElse.

Pavyzdys:

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

// orElse visada skaičiuoja "default"
String result1 = opt.orElse(getDefault());

// orElseGet iškviečia getDefault() tik jei opt tuščias
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Skaičiuojama numatytoji reikšmė");
    return "default";
}