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 uOptional.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
orElseGetda 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";
}