在專案開發中,經常會遇到NullPointerException異常,特別是一些新手,非常的鬱悶,有時候會很隱蔽,特別是不同的人書寫的程式碼進行呼叫時。
以下是我所遇到的NullPointerException異常情景:
問題:
1、迴圈List時,如:
for(int i = 0,size = list.size();i < size;i ++){ dosomething.... }
2、比較字串時,如:
if(str.equals("test")){ dosomething.... }
3、呼叫物件的方法時,如
System.out.println(str.toString());
解決方案:
1、對於這個問題,要不在使用之前判斷其是否是非空,如:
if(list != null){ for(int i = 0,size = list.size();i < size;i ++){ dosomething.... } }
要麼返回的List物件大小為0的List,如:
list = Collections.emptyList();
2、對於這個問題,要麼是在使用之前判斷其是否為非空,如:
if(str != null && str.equals("test")){ dosomething.... }
要麼是左邊是已知的字串,如:
if("test".equals(str)){ dosomething.... }
3、對於這個問題,若是使用toString()方法,可以這樣,如:
System.out.println(String.valueOf(str));
即使該物件為null,但是其呼叫之後輸出的字串"null",也不會發生異常;
若是呼叫其它的方法,則需要判斷其是否為空,當然若你知道肯定不為空,則不必,若連你自己都無法確定是否非空,則必須要判斷一下。