5 · Intermediate · lesson 30 of 41

Optional

A container that may or may not hold a value — a nicer alternative to null.

Java
Optional<User> found = repo.findById(42);
String name = found.map(u -> u.name).orElse("unknown");

found.ifPresent(u -> System.out.println(u.email));

// Chain
int emailLen = repo.findById(42)
    .map(u -> u.email)
    .map(String::length)
    .orElse(0);
WATCH OUT
Don't use Optional for fields or parameters — reserve it for return types.
Key takeaways
  • ✓Signals absence in the type system.
  • ✓Use map/flatMap/orElse — avoid isPresent()+get().