Optional chaining
Replace nested null checks with an Optional pipeline.
Code Comparison
✕ Java 8
String city = null;
if (user != null) {
Address addr = user.getAddress();
if (addr != null) {
city = addr.getCity();
}
}
if (city == null) city = "Unknown";
✓ Java 9+
String city = Optional.ofNullable(user)
.map(User::address)
.map(Address::city)
.orElse("Unknown");
Why the modern way wins
Chainable
Each .map() step handles null transparently.
Linear flow
Read left-to-right instead of nested if-blocks.
NPE-proof
null is handled at each step — no crash possible.
Old Approach
Nested Null Checks
Modern Approach
Optional Pipeline
Since JDK
9
Difficulty
beginner
JDK Support
Optional chaining
Available
Available since JDK 8+ (improved in 9+)
How it works
Optional.map() chains through nullable values, short-circuiting on the first null. orElse() provides the default. This eliminates pyramid-of-doom null checking.