返回零长度的数组或者集合,而不是null
<<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null
假设一个方法的返回值类型是集合或者数组 。假设在方法内部须要返回的集合或者数组是零长度的,也就是没有实际对象在里面,
我们也应该放回一个零长度的数组或者集合,而不是返回null。
假设返回了null,client程序猿就要检測返回的是不是null。然后才干
进行下一步操作。否则就会引发NullPointException。可是假设是返回的的是空数组或者集合,就不会再兴许的使用这个对象上,引发
空指针异常,我们能够依据代码的行为和表现,来推断数组和集合是不是为空。
在Collections中有专门针对List,Set,Map的空的实现。
如:
Collections.emptyList()
Collections.emptySet();
Collections.emptyMap();
在返回这些集合的方法中,尽量不要返回空值,避免NullPointerException。而就尽量返回非空值,这时候上面
所看到的的三个空(不是null)集合就实用武之地了,能够使用它们。
如在某方法中这样做:
publci List<String> getInterests(){
if(interests == null){
return Collections.emptyList();
}
return interests;
}
这样也能够避免返回空值。
返回字符串的方法是不是也应该返回一个空串呢?
返回零长度的数组或者集合,而不是null的更多相关文章
- Effective Java 之-----返回零长度的数组或集合而不是null
如下代码,通常用户列表为空时,会习惯性返回null,因为这时会认为:null返回值比零长度数组更好,因为它避免了分配数组所需要的开销. private final List<UserBean&g ...
- Effective java 43返回零长度的数组或者集合而不是null
- 返回零长度的数组或集合,而不是null
返回零长度的数组或集合,而不是null 像下面的方法并不少见: private final List<Cheese> cheesesInStock = ...; /** * @retu ...
- 第四十三条:返回零长度的数组或者集合,而不是null
如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长度的,也就是没有实际对象在里面, 我们也应该放回一个零长度的数组或者集合,而不是返回null.如果返回了null,客 ...
- 第43条:返回零长度的数组或者集合,而不是null
private final List<Cheese> cheesesInStock = ...; public Cheese[] getCheese() { if(cheesesInSto ...
- GNU C 中零长度的数组【转】
原文链接:http://www.cnblogs.com/dolphin0520/p/3752492.html 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用 ...
- 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组
原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...
- C语言 结构体中的零长度数组
/* C语言零长度数组大小和取值问题 */ #include <stdio.h> #include <stdlib.h> #include <string.h> s ...
- 【Java】返回长度为零的数组或者集合,而不是null
今天在牛客网上做一个编程题时,在提交代码后老是抛出NullPointerException异常,大概的代码如下: public ArrayList<Integer> foo(TreeNod ...
随机推荐
- mysql alter修改数据库表结构用法
1.alter操作表字段 (1)增加字段 alter table 表名 add 字段名 字段类型: alter table student add name varchar(10): (2)修改字段 ...
- ruby on rails全局布局,局部视图,局部布局
参考链接:http://guides.ruby-china.org/layouts_and_rendering.html#%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E6 ...
- Vutrl 自己搞SS的些问题
虽然是第二次搞这玩意但还是搞了我三天,有些东西还是想要记录一下的,以下是我犯的错误 至于如何开始搭建Vutrl上面的服务器,下面有两个链接自己搞,我就讲讲我自己碰到的问题 https://segmen ...
- javascript:与获取鼠标位置有关的属性
javascript并没有mouse对象,获取鼠标坐标要靠强大的event对象。 我们通过监听document的mousemove,就可以实时获得鼠标位置。 但是!!event中和鼠标相关的属性太多了 ...
- jquery版本的问题造成第二次全选无效
注意:第一种方式点击全选按钮 第一次全选有用第二次全选无效.因为jquery1.7以上的版本用此方法只能第一次好用,第二次就会失效,用第二种方式解决
- oracle 9i/10g/11g(11.2.0.3)安装包和PATCH下载地址汇总
今天上PUB看见一位热心人汇总了这么个地址列表,转发来空间: 把下面的地址复制到讯雷里就可以下载. -------------------------------------------------- ...
- html5的新通讯技术socket.io,实现一个聊天室
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [CodePlus2017]汀博尔
Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 158 Solved: 61[Submit][Status][Discuss] Description ...
- php 之mysql安全
php 之mysql安全 原文:https://www.cnblogs.com/mafeng/p/5939329.html. 请浏览原文. 一.服务器配置方面. (1) 打开php的安全模式 php的 ...
- Java并发包——Atomic操作
Java并发包——Atomic操作 摘要:本文主要学习了Java并发包下的atomic包中有关原子操作的一些类. 部分内容来自以下博客: https://blog.csdn.net/qq_303796 ...