idea彩蛋
2019-05-09 本文已影响0人
行走的鸡汤哥
今天在review代码时,发现了一个很有趣的现象。
idea作为日常的开发工具,对于简单的代码已经能做到很好的智能提示了,比如英语单词错误、比如明显的NPE异常等。今天发现,同个逻辑,不同的写法,idea会有不同的反应。
先看下下图的代码:
写法一:采用Objects.isNull(s)判断是否为null
private static int validStrLength(String s) {
if (Objects.isNull(s)) {
System.out.println("s is null!");
}
if (s.length() > 10) {
return 10;
}
return s.length();
}
上述代码很明显会触发NPE异常。这个逻辑如果换一种写法,在idea中的显示形式就有很大不同了。写法二如下所示:
写法一:采用 "==" 判断是否为null
private static int validStrLength(String s) {
if (s == null) {
System.out.println("s is null!");
}
if (s.length() > 10) {
return 10;
}
return s.length();
}
查看 Objects.isNull(s) 的内部逻辑,我们可以发现,写法一和写法二其实是完全一样的。
Objects.isNull()内部实现
但写法一和写法二在idea中的表现形式是有较大差异的。
写法一 写法二
写法二有明显的错误提示!
就仅以这种场景来看,以后还是用”==“会更好点。这个算是idea的彩蛋吧😄😄