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 的工程师帮你写这些无聊的代码。"

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

相关推荐
C雨后彩虹2 小时前
synchronized高频考点模拟面试过程
java·面试·多线程·并发·lock
JAVA+C语言2 小时前
Java ThreadLocal 的原理
java·开发语言·python
lkbhua莱克瓦242 小时前
进阶-SQL优化
java·数据库·sql·mysql·oracle
行稳方能走远2 小时前
Android java 学习笔记 1
android·java
kaico20182 小时前
多线程与微服务下的事务
java·微服务·架构
zhglhy2 小时前
QLExpress Java动态脚本引擎使用指南
java
小瓦码J码2 小时前
使用AWS SDK实现S3桶策略配置
java
廋到被风吹走2 小时前
【Spring】Spring Cloud 配置中心动态刷新与 @RefreshScope 深度原理
java·spring·spring cloud
牧小七2 小时前
springboot 配置访问上传图片
java·spring boot·后端