如下代码,通常用户列表为空时,会习惯性返回null,因为这时会认为:null返回值比零长度数组更好,因为它避免了分配数组所需要的开销。
private final List<UserBean> UserList = null; public List<UserBean> getUserBean(){ if(UserList.size() == 0){ return null; }else{ return UserList; } }
但这种观点是站不住脚的,原因如下:
1) 在这个级别上担心性能问题是不明智的,除非分析表明这个方法正是造成性能问题的真正源头;
2) 对于不返回任何元素的调用,每次都返回一个零长度数组是有可能的,因为零长度的数组是不可变的,而不可变对象有可能被自由的共享。
因此,可以返回零长度的集合如下:
public List<UserBean> getUserBeanModify(){ if(UserList.isEmpty()){ return Collections.emptyList(); }else{ return UserList; } }
综上,需注意的是,返回类型为数组或集合的方法没理由返回null,而是返回一个零长度的数组或者集合。