Effective Java 之-----返回零长度的数组或集合而不是null

Posted hunter_Cecil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Effective Java 之-----返回零长度的数组或集合而不是null相关的知识,希望对你有一定的参考价值。

如下代码,通常用户列表为空时,会习惯性返回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,而是返回一个零长度的数组或者集合。

以上是关于Effective Java 之-----返回零长度的数组或集合而不是null的主要内容,如果未能解决你的问题,请参考以下文章

Java:Effective java学习笔记之 静态工厂方法的简单理解和使用

Effective Java 读书笔记之八 异常

Effective Java 读书笔记之六 方法

Effective Java 之-----消除过期的对象引用

Effective Java 之-----关于延迟初始化

Java:Effective java学习笔记之 考虑实现Comparable 接口