-
我用 Optional 包装返回值、想从此优雅地告别空指针,结果代码里满是 optional.get(),线上照样抛异常崩溃,排查后才明白我只是把空指针换了个名字、根本没用上 Optional 真正的价值的深度复盘
我读了不少用 Optional 优雅处理空值告别 NPE 的文章,深以为然,把一批可能返回空的方法都改成返回 Optional,心想这下调用方就得乖乖处理空值了。可上线后异常监控里照样躺着一堆崩溃,只是异常类型从 NullPointerException 变成 NoSuchElementException。翻调用代码顿时哭笑不得:调用方拿到 Optional 几乎全是直接 .get() 取值,只是…- 0
- 0
-
我从 Map 里取一个计数赋给 int,平时好好的,某次那个 key 不存在、map 返回 null,自动拆箱直接抛了 NullPointerException:一次 Java 自动拆箱 NPE 的深度复盘
我有个 Map counts 存计数,某处 int count = counts.get(key) 取出来用,平时好好的,可线上偶发崩溃,异常栈指向这行 NullPointerException。这就是个取值赋值,count 是 int、get 返回 Integer,哪来的空指针?查清才明白是自动拆箱:那个 key 不存在时 counts.get(key) 返回 null,而我把它赋给 int,J…- 2
- 0
-
祖传 Java 服务大促崩盘复盘:从连接泄漏、线程不安全到现代 Java 工程化重构
6 人的后端团队把一套支撑电商交易与履约的核心 Java 服务,从一堆用手写 try-finally 管连接却在异常分支漏 close、把 SimpleDateFormat 声明成 static 让多线程共享、到处返回 null 又到处 if 判空、满屏命令式 for 循环、堆满 getter/setter 的可变 JavaBean、用 Date/Calendar 处理时间、手动下载 jar 拼 …- 11
- 0
-
从 Java 6/7 古早体系 + 一堆 getter/setter 样板 POJO + null 满天飞到处 NPE + checked 异常层层 try-catch 吞掉 + for 循环命令式遍历 + 手撸 Thread 加 synchronized 加锁 + Date/SimpleDateFormat 非线程安全 + finally 手动 close 资源经常漏 + instanceof 加强制转型分支 古老 Java 体系 → 2026 Java 21 LTS + record 不可变记录 + Optional 显式可空 + Stream 声明式 + Lambda 函数式 + 虚拟线程 Loom + CompletableFuture 异步编排 + java.time 不可变线程安全 + sealed 类与模式匹配 switch + try-with-resources 自动资源管理 + var 推导 现代 Java 体系 87 天战役复盘:47 套工程修法 + 7 个 P0 复盘 + 6 条工程哲学
16 位 Java 后端工程师 87 天把一套跑了八年的古老 Java 体系——一堆 getter/setter 样板 POJO、null 满天飞到处 NPE、checked 异常层层 try-catch 吞掉、for 循环命令式遍历集合、手撸 Thread 加 synchronized 共享加锁、Date/SimpleDateFormat 非线程安全偶发乱码、finally 手动 close 资…- 9
- 0
Optional
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!




