返回零长度的数组或者集合,而不是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 ...
 
随机推荐
- windows中彻底卸载mysql
			
1)停止MySQL服务 打开控制面板→管理工具→服务(找到MySQL) 2)卸掉mysql server 打开控制面板→程序与功能→找到mysql server然后卸载 3)将mysql目录下的安装文 ...
 - idea Error:(65, 27) java: 未结束的字符串文字
			
今天在使用IDEA的时候,出现了这个错误,原因项目文件编码不一致导致的,解决方法是: 将项目的文件编码全改成一致(UTF-8),如下图所示:
 - Django框架基础知识04-模板标签与模板继承
			
1.常用的模板标签 -作用是什么? -常用标签 总结:语法 {% tag %} {% endtag %} {% tag 参数 参数 %} 2.模板的继承与引用 -引用 include标签 -继承 ex ...
 - source not found
			
Eclipse 调试 时, 无论在activity中哪一行打断点.调试时,都会跳转到activity源码中.报错 source not found : 解决办法: ->在调试的线程上 右键单击 ...
 - 《算法导论》— Chapter 6 堆排序
			
序 本文主要介绍堆排序算法(HeapSort),堆排序像合并排序而不像插入排序,堆排序的运行时间为O(nlgn):像插入排序而不像合并排序,它是一种原地(in place)排序算法.在任何时候,数组中 ...
 - [luoguP2736] “破锣摇滚”乐队 Raucous Rockers(DP)
			
传送门 f[i][j]表示前i首歌放到前j个盘里最多能放多首 ntr[i][j]表示i~j中最多能放进一张盘中多少首歌 ntr数组可以贪心预处理出来. #include <cstdio> ...
 - ubuntu samba 配置简介
			
Ubuntu 11.04下虚拟机Samba的共享配置详细步骤 一. Ubuntu 11.04下Samba的安装: $ sudo apt-get insall samba ...
 - 【POJ3264】Balanced Lineup(RMQ)
			
题意:每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置连续的牛来进行比赛 ...
 - [bzoj3998][TJOI2015]弦论_后缀自动机
			
弦论 bzoj-3998 TJOI-2015 题目大意:给定一个字符串,求其$k$小子串. 注释:$1\le length \le 5\cdot 10^5$,$1\le k\le 10^9$. 想法: ...
 - 洛谷——P1047 校门外的树
			
P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...