Java 趣闻

Java 趣闻

今天在代码review时,发现同事写了一个"完美"的空指针检查:

java 复制代码
if (str != null && str.length() > 0 && !str.equals("")) {
    // 处理逻辑
}

我笑着问他:"你知道 StringUtils.isEmpty() 的存在吗?" 他淡定回答:"当然知道,但我这样写更'安全'。"

我继续追问:"那你知不知道 str.equals("") 会在 str 为 null 时抛出 NPE?" 他愣住了:"啊?前面不是已经判空了吗?"

我解释道:"Java的 && 是短路运算符,如果 str != null 为 false,后面的条件根本不会执行。所以你的第三个条件永远不会抛 NPE,但也永远不会被执行。"

他恍然大悟:"那我应该用 || ?" 我:"不,你应该直接用 StringUtils.isEmpty(),让 Apache Commons 的工程师帮你写这些无聊的代码。"

这让我想起一句话:程序员最大的敌人不是需求变更,而是自己写的代码。

相关推荐
ChoSeitaku18 小时前
11.异常_throws_try...catch_BigInteger_BigDecimal_Date_Calendar_LocalDate_Integer
java
胡志辉的博客18 小时前
完全开源、本地 SQLite 管理一切:我写了一个桌面邮件客户端 OneMail
java·sqlite·开源
沪漂阿龙18 小时前
Java JVM 面试题详解:JVM运行原理、内存模型、堆栈方法区、GC垃圾回收、JIT编译、类加载机制与线上调优全攻略
java·开发语言·jvm
小碗羊肉18 小时前
Maven高级
java·开发语言·maven
星秀日18 小时前
Spring Boot + Sa-Token 实时聊天系统:用户注册流程源码深度剖析
java·人工智能·spring·状态模式
YOU OU19 小时前
SpringBoot 配置文件
java·spring boot·后端
c++之路19 小时前
观察者模式(Observer Pattern)
java·网络·观察者模式
Dicky-_-zhang19 小时前
云原生存储与数据库选型实战:从传统数据库到云原生数据库的演进
java·jvm
凝小飞19 小时前
cucumber JAVA 一键部署指南
java·集成测试·模块测试
java修仙传19 小时前
Java 实习日记:断面状态筛选 Bug 修复与对比案例日期过滤优化
java·bug·实习