当方法的返回类型是数组或集合时,不要返回null,尽量返回容量为0的数据或集合
@Overridepublic List<ServerPopBean> queryServerListByStoreAndYn(int storeId) {try {if(storeId != 0){return serverPopManager.queryServerListByStoreAndYn(storeId);}else{return null;}} catch (Exception e) {log.error("Query server list by store and yn error!", e);return null;}}
可以看出来,如果要调用queryServerListByStoreAndYn()方法的返回对象,一个必要的操作是判空!但是,调用的代码并没有进行判空,直接操作,造成了空指针一样。
怎样让调用者省心不用判空?So easy!返回容量为零的集合。这样,既保持了代码的逻辑不变,而且调用方便不用判空。
修改后的代码如下:
@Overridepublic List<ServerPopBean> queryServerListByStoreAndYn(int storeId) {try {if(storeId != 0){return serverPopManager.queryServerListByStoreAndYn(storeId);}else{return new ArrayList<ServerPopBean>();}} catch (Exception e) {log.error("Query server list by store and yn error!", e);return new ArrayList<ServerPopBean>();}}
如此一来,便可完全规避不必要的空指针异常。《effective java》一书有对这种代码的详解。