Sobes.tech
Junior — Middle

Koja je razlika između metoda orElse i orElseGet u Javi, i koje su njihove karakteristike korišćenja?

sobes.tech АИ

Одговор од АИ

U Javi, metode orElse i orElseGet koriste se sa klasom Optional za postavljanje podrazumevane vrednosti ako objekat nedostaje.

  • orElse(T other) — prihvata podrazumevanu vrednost koja se odmah izračunava prilikom poziva metode, bez obzira da li postoji vrednost u Optional.
  • orElseGet(Supplier<? extends T> other) — prihvata dobavljača (funkciju) koji se poziva samo ako vrednost nedostaje, tj. izračunavanje vrednosti se odlaže dok ne bude potrebno.

Karakteristike korišćenja:

  • Ako je izračunavanje podrazumevane vrednosti skupo ili ima sporedne efekte, bolje je koristiti orElseGet da biste izbegli nepotrebne troškove.
  • Ako je vrednost jednostavna i brza, može se koristiti orElse.

Primer:

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

// orElse uvek izračunava "default"
String result1 = opt.orElse(getDefault());

// orElseGet poziva getDefault() samo ako je opt prazan
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Izračunavanje podrazumevane vrednosti");
    return "default";
}