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的彩蛋吧😄😄

上一篇下一篇

猜你喜欢

热点阅读