Sobes.tech
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 orElseGet para 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";
}