El Tipo Optional
Optional<T> representa un valor que podría o no estar presente, como una alternativa explícita a devolver null y esperar que quien llama se acuerde de comprobarlo. Optional.of(value) envuelve un valor presente, Optional.empty() representa uno ausente, y orElse(fallback) lo desenvuelve de forma segura, suministrando un valor por defecto cuando no hay nada.
import java.util.Optional;
public class Main {
static Optional<String> findUser(int id) {
if (id == 1) {
return Optional.of("Alice");
}
return Optional.empty();
}
public static void main(String[] args) {
Optional<String> user = findUser(1);
System.out.println(user.orElse("Unknown"));
Optional<String> missing = findUser(2);
System.out.println(missing.orElse("Unknown"));
}
}Alice Unknown
Esa es la base de Java: classes e interfaces para estructurar código, inheritance y polymorphism para compartir comportamiento, generics y el Collections Framework para estructuras de datos reutilizables y type-safe, y lambdas y streams para el estilo más moderno y funcional de Java. Desde aquí, el mejor siguiente paso es practicar — elige un programa pequeño y constrúyelo, apoyándote en la verificación de tipos estática del compilador para detectar errores sobre la marcha.
Practice exercise
Escribe un method findUser(int id) que devuelva un Optional<String>: "Alice" si id es 1, de lo contrario empty. Llámalo con 2 e imprime el resultado con orElse("Unknown").