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 azOptional-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
orElseGethaszná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";
}