Sobes.tech
Junior — Middle

Mi a különbség az orElse és az orElseGet módszerek között Java-ban, és mik a használatuk jellemzői?

sobes.tech MI

Válasz az MI-től

Java-ban az orElse és az orElseGet metódusokat az Optional osztállyal használják alapértelmezett érték megadására, ha az objektum hiányzik.

  • orElse(T other) — elfogad egy azonnal kiszámított alapértelmezett értéket, függetlenül attól, hogy van-e érték az Optional-ban.
  • orElseGet(Supplier<? extends T> other) — elfogad egy szállítót (függvényt), amely csak akkor hívódik meg, ha az érték hiányzik, azaz az érték kiszámítása késleltetve történik, amíg szükség nem lesz rá.

Használati jellemzők:

  • Ha az alapértelmezett érték kiszámítása drága vagy mellékhatásokkal jár, jobb az orElseGet használata, hogy elkerüljük a szükségtelen költségeket.
  • Ha az érték egyszerű és gyors, használható az orElse.

Példa:

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

// az `orElse` mindig kiszámítja a "default"
String result1 = opt.orElse(getDefault());

// az `orElseGet` csak akkor hívja meg a `getDefault()`-ot, ha az `opt` üres
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Alapértelmezett érték számítása");
    return "default";
}