Junior — Middle
Qual è la differenza tra i metodi orElse e orElseGet in Java, e quali sono le loro caratteristiche di utilizzo?
sobes.tech AI
Risposta dell'AI
In Java, i metodi orElse e orElseGet vengono utilizzati con la classe Optional per assegnare un valore predefinito se l'oggetto è assente.
orElse(T other)— accetta un valore predefinito che viene calcolato immediatamente al momento della chiamata del metodo, indipendentemente dal fatto che ci sia un valore inOptional.orElseGet(Supplier<? extends T> other)— accetta un fornitore (funzione) che viene chiamato solo se il valore manca, cioè il calcolo del valore viene posticipato fino a quando non è necessario.
Caratteristiche d'uso:
- Se il calcolo del valore predefinito è costoso o ha effetti collaterali, è meglio usare
orElseGetper evitare costi inutili. - Se il valore è semplice e veloce, si può usare
orElse.
Esempio:
Optional<String> opt = Optional.empty();
// orElse calcola sempre "default"
String result1 = opt.orElse(getDefault());
// orElseGet chiama getDefault() solo se opt è vuoto
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Calcolo del valore predefinito");
return "default";
}