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().