一般來講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了
留言列表