Junior — Middle
¿Cuál es la diferencia entre los métodos orElse y orElseGet en Java, y cuáles son sus características de uso?
sobes.tech AI
Respuesta de la IA
En Java, los métodos orElse y orElseGet se utilizan con la clase Optional para asignar un valor predeterminado si el objeto no está presente.
orElse(T other)— acepta un valor predeterminado que se calcula inmediatamente al llamar al método, independientemente de si hay un valor en el Optional.orElseGet(Supplier<? extends T> other)— acepta un proveedor (función) que se llama solo si falta el valor, es decir, el cálculo del valor se aplaza hasta que sea necesario.
Características de uso:
- Si el cálculo del valor predeterminado es costoso o tiene efectos secundarios, es mejor usar
orElseGetpara evitar gastos innecesarios. - Si el valor es simple y rápido, se puede usar
orElse.
Ejemplo:
Optional<String> opt = Optional.empty();
// orElse siempre calcula "default"
String result1 = opt.orElse(getDefault());
// orElseGet llama a getDefault() solo si opt está vacío
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Calculando valor predeterminado");
return "default";
}