java中的空指針異常

1. 鏈式調用

尤其是在鏈式get某個屬性時,要注意中間節點可能爲空。

String version = "UNKNOWN";
if (computer != null) {
    Soundcard soundcard = computer.getSoundcard();
    if (soundcard != null) {
        USB usb = soundcard.getUSB();
        if (usb != null) {
            version = usb.getVersion();
        }
    }
}

java8之後推薦使用Optional實現鏈式調用。

String name = computer.flatMap(Computer::getSoundcard)
                .flatMap(Soundcard::getUSB)
                .map(USB::getVersion)
                .orElse("UNKNOWN");

2. 原始類型參數

推薦使用void function(Integer a),而不是void function(int a)

千萬不要爲了節約一點內存而使用後者。後者與前者在語義上並不等價,後者隱式規定了a不能爲null。

如果void function(int a)的調用方給它傳入的是個Integer,那就要仔細思考參數是否可能爲null,這裏很容易出現空指針異常。

發佈了97 篇原創文章 · 獲贊 28 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章