Sobes.tech
Junior — Middle

Wat is het verschil tussen de methoden orElse en orElseGet in Java, en wat zijn hun gebruikskenmerken?

sobes.tech AI

Antwoord van AI

In Java worden de methoden orElse en orElseGet gebruikt met de klasse Optional om een standaardwaarde toe te wijzen als het object afwezig is.

  • orElse(T other) — accepteert een standaardwaarde die onmiddellijk wordt berekend bij het aanroepen van de methode, ongeacht of er een waarde in Optional is.
  • orElseGet(Supplier<? extends T> other) — accepteert een leverancier (functie) die alleen wordt aangeroepen als de waarde ontbreekt, dat wil zeggen, de berekening van de waarde wordt uitgesteld tot dat het nodig is.

Gebruiksspecificaties:

  • Als de berekening van de standaardwaarde duur is of bijwerkingen heeft, is het beter om orElseGet te gebruiken om onnodige kosten te voorkomen.
  • Als de waarde eenvoudig en snel is, kan orElse worden gebruikt.

Voorbeeld:

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

// orElse berekent altijd "default"
String result1 = opt.orElse(getDefault());

// orElseGet roept getDefault() alleen aan als opt leeg is
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Berekenen van de standaardwaarde");
    return "default";
}