一般來講Java最常見的錯誤就是NullPointerException

 

這個錯誤會因為對null的物件做事情造成

比如說如果我們從外件傳來的物件提取字串

會像是以下的程式碼

    public void method1(SampleObject input){
        String message = input.getMessage();
        if(message.equals("success")){
            System.out.println("insert success!");
        }
    }

 

這樣的處理會有個風險,就是傳入的物件如果是null

呼叫getMessage的時候就會出現NullPointerException

所以呢我們可以把第一行改寫一下變成

    public void method1(SampleObject input){
        String message = input != null ? input.getMessage() : "";
        if(message.equals("success")){
            System.out.println("insert success!");            
        }
    }

再確認物件不是null的情況下才getMessage

但是接下來如果發生input不是null,但是input裡面的getMessage()方法回傳的值是null時,這個程式碼到message.equals("success")還是會出問題

於是我們又可以把他改成

    public void method1(SampleObject input){
        String message = input != null ? input.getMessage() : "";
        if(message != null && message.equals("success")){
            System.out.println("insert success!");            
        }
    }

不過這個在閱讀上比較麻煩,事實上"success"這個字串是肯定不會null的

而equals()方法傳入null也不會發生NullPointerException

也就是說,以下的程式碼

    public void method1(SampleObject input){
        String message = input != null ? input.getMessage() : null;
        if("success".equals(message)){
            System.out.println("insert success!");         
        }
    }

 

就可以簡單的防止傳入的物件是null或是message為null時發生的NullPointerException了

arrow
arrow
    文章標籤
    Java
    全站熱搜
    創作者介紹
    創作者 Dnight 的頭像
    Dnight

    D奈老師的部落格

    Dnight 發表在 痞客邦 留言(0) 人氣()