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

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

相关推荐
TTBIGDATA40 分钟前
【Hue】Ambari 页面启动 Hue 失败 user ‘hadoop‘ does not exist
java·hadoop·ambari
饺子大魔王的男人2 小时前
Remote JVM Debug+cpolar 让 Java 远程调试超丝滑
java·开发语言·jvm
Hx_Ma169 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode10 小时前
原子操作类LongAdder
java·开发语言
舟舟亢亢10 小时前
Java集合笔记总结
java·笔记
小酒窝.11 小时前
【多线程】多线程打印ABC
java
乡野码圣11 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言11 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机12 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.12 小时前
【多线程】多线程打印1~100
java·多线程