Sobes.tech
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, orElseGet zu verwenden, um unnötige Kosten zu vermeiden.
  • Wenn der Wert einfach und schnell ist, kann orElse verwendet 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";
}