1. 问题场景
前几天同事线上出bug,因为 user.getAddress().getCity() 中间某个对象为null,直接500了。
2. 常见错误写法
if(user != null && user.getAddress() != null) {...} // 太丑了
3. 我的5种优雅方案
- 方案1:Optional.ofNullable (JDK8自带) Optional.ofNullable(user).map(User::getAddress).map(Address::getCity).orElse("未知");
- 方案2:StringUtils.defaultString (Apache Commons)
- 方案3:@Nullable注解 + IDE警告
- 方案4:Lombok @NonNull
- 方案5:Java 14 的 Objects.requireNonNullElse
4. 总结
推荐用Optional,代码清晰且不会漏判空。
5. 互动
你平时怎么处理空指针?评论区聊聊。