Junior — Middle
Was ist der Unterschied zwischen den Methoden orElse und orElseGet in Java, und was sind ihre Besonderheiten bei der Verwendung?
sobes.tech KI
Antwort von AI
In Java werden die Methoden orElse und orElseGet mit der Klasse Optional verwendet, um einen Standardwert festzulegen, falls das Objekt nicht vorhanden ist.
orElse(T other)— akzeptiert einen Standardwert, der sofort beim Aufruf der Methode berechnet wird, unabhängig davon, ob im Optional ein Wert vorhanden ist.orElseGet(Supplier<? extends T> other)— akzeptiert einen Lieferanten (Funktion), der nur aufgerufen wird, wenn der Wert fehlt, das heißt, die Berechnung des Wertes wird aufgeschoben, bis sie notwendig ist.
Verwendungshinweise:
- Wenn die Berechnung des Standardwerts teuer ist oder Nebenwirkungen hat, ist es besser,
orElseGetzu verwenden, um unnötige Kosten zu vermeiden. - Wenn der Wert einfach und schnell ist, kann
orElseverwendet werden.
Beispiel:
Optional<String> opt = Optional.empty();
// orElse berechnet immer "default"
String result1 = opt.orElse(getDefault());
// orElseGet ruft getDefault() nur auf, wenn opt leer ist
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Berechne Standardwert");
return "default";
}