代码对比
✕ 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");
发现此代码有问题? 告诉我们。
为什么现代方式更好
可链式调用
每个 .map() 步骤透明地处理 null。
快乐路径清晰
正常流程线性可读,无嵌套。
无显式 null 检查
null 处理内置于 Optional 的行为中。
旧方式
嵌套 null 检查
现代方式
Optional 管道
自 JDK
9
难度
入门
JDK 支持
Optional 链式调用
可用
自 JDK 8+ 起可用(JDK 9+ 中有所改进)
工作原理
Optional.map() 透明地处理 null 值进行链式调用,在第一个 empty 时短路。这消除了嵌套的 if-null 检查,使正确路径清晰可见。
相关文档