避免空指針的幾個(gè)寫法
equals
Object的equals方法是方法是對(duì)稱的,調(diào)用a.equals(b)和調(diào)用b.equals(a)是完全相同的盖溺,這也是為什么程序員對(duì)于對(duì)象a和b這么不上心舶替。但是要注意a == null時(shí)會(huì)拋出空指針異常孙技。
例如:
Object unknownObject = null;
if(unknownObject.equals("knownObject")){
}
所以我寧愿把確定不為null的對(duì)象放在前面。
valueOf()和toString()
因?yàn)檎{(diào)用null對(duì)象的toString()會(huì)拋出空指針異常脊凰,如果我們能夠使用valueOf()獲得相同的值砰左,那寧愿使用valueOf(),傳遞一個(gè)null給valueOf()將會(huì)返回“null”毫炉,尤其是在那些包裝類,像Integer削罩、Float瞄勾、Double和BigDecimal费奸。
例如:
BigDecimal bd;
System.out.println(String.valueOf(bd)); //不會(huì)拋出空指針異常
System.out.println(bd.toString()); //拋出 "Exception in thread "main"
避免從方法中返回空指針,而是返回空collection或者空數(shù)組进陡。
盡可能返回一個(gè)空集合和空數(shù)組而不是返回null愿阐。