避免空指针的几个写法
equals
Object的equals方法是方法是对称的,调用a.equals(b)和调用b.equals(a)是完全相同的,这也是为什么程序员对于对象a和b这么不上心。但是要注意a == null时会抛出空指针异常。
例如:
Object unknownObject = null;
if(unknownObject.equals("knownObject")){
}
所以我宁愿把确定不为null的对象放在前面。
valueOf()和toString()
因为调用null对象的toString()会抛出空指针异常,如果我们能够使用valueOf()获得相同的值,那宁愿使用valueOf(),传递一个null给valueOf()将会返回“null”,尤其是在那些包装类,像Integer、Float、Double和BigDecimal。
例如:
BigDecimal bd;
System.out.println(String.valueOf(bd)); //不会抛出空指针异常
System.out.println(bd.toString()); //抛出 "Exception in thread "main"
避免从方法中返回空指针,而是返回空collection或者空数组。
尽可能返回一个空集合和空数组而不是返回null。