// Created on savesnippets.com · https://savesnippets.com/V1c4u30nX80LSI
import java.util.*;
class Demo {
record Address(String city, String zip) {}
record User(String name, Optional
address) {}
Optional findUser(int id) {
return Optional.of(new User("Alice", Optional.of(new Address("Austin", "78704"))));
}
void example() {
// Chain through nested optionals
Optional city = findUser(1)
.flatMap(User::address) // Optional
.map(Address::city); // Optional
System.out.println(city.orElse("none"));
// Filter conditionally — empty if predicate fails
Optional longCity = findUser(1)
.flatMap(User::address)
.map(Address::city)
.filter(c -> c.length() > 10);
System.out.println(longCity); // Optional.empty if city <= 10 chars
// Combined with orElseThrow for must-exist semantics
String requiredZip = findUser(1)
.flatMap(User::address)
.map(Address::zip)
.orElseThrow(() -> new IllegalStateException("no zip"));
}
}