第七章:方法。ITEM43:返回零长度的数组或者集合,而不是null 。

 1 private final List<String> l = ... ;
 2
 3         public String[] getString() {
 4             if(l.size() == 0)
 5                 return null ;
 6         }
 7
 8         String[] s = getString();
 9                 //对于一个返回null而不是零长度数组或者集合的方法,每次都要判断!=null
10         if(s != null && Arrays.asList(s).contains("a")){
11             //dosomething
12         }
1 private final List<String> l = ... ;
2
3         public static final String[] EMPTY_STRING_ARRAY = new String[0] ;
4         public String[] getString() {
5                 return l.toArray(EMPTY_STRING_ARRAY) ;
6         }
1 //返回list的情况
2 public List<String> getString() {
3             if(l.isEmpty())
4                 return Collections.emptyList() ;
5             else
6                 return new ArrayList<String>(l) ;
7         }
时间: 2024-11-09 05:17:21

第七章:方法。ITEM43:返回零长度的数组或者集合,而不是null 。的相关文章

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) 在这个级

返回零长度的数组或者集合,而不是null——Effective Java 读书笔记

/** * 返回零长度的数组或者集合,而不是null * * @author 刘向峰 * */ public class Shop { private List<Object> objectList; // 零长度数组常量被传递给toArray方法,以指明所期望的返回类型 private final static Object[] EMPTY_OBJECT_ARRAY = new Object[0]; public Shop(List<Object> objectList) { s

返回零长度的数组或者集合,而不是null

<<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null 如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长度的,也就是没有实际对象在里面, 我们也应该放回一个零长度的数组或者集合,而不是返回null.如果返回了null,客户端程序员就要检测返回的是不是null,然后才能 进行下一步操作,否则就会引发NullPointException.但是如果是返回的的是空数组或者集合,就不会再后续的使用这个对象上,引发 空指针

第43条:返回零长度的数组或者集合,而不是null

private final List<Cheese> cheesesInStock = ...; public Cheese[] getCheese() { if(cheesesInStock.size() == 0) return null; ... } 如果返回null, 在客户端处理代码就需要有额外的代码来处理null返回值: Cheese[] cheeses = shop.getCheeses(); if(cheeses != null && Arrays.asList

[Effective Java]第七章 方法

第七章      方法 38.      检查参数的有效性 绝大多数方法和构造器对于传递给它们的参数值都会有某些限制.例如,索引值必须是非负的,对象引用不能为null等,这些都是常见的.你应该在文档中清楚地指明所有这些限制,并且在方法体的开头处检查参数,以强制施加这些限制. 应该在方法和构造器体前进行了参数的有效性检查,并且及时向外抛出适当的异常.如果方法没有检查它的参数,就有可能发生几种情形.该方法可能在处理过程中失败,并且产生令人费解的异常,更有可能,该方法可以正常返回,但是会悄悄地计算出错

第七章 方法

方法名可以由英文字母.数字.下划线组成,但是不能以数字开头. 对象.方法名(参数1,参数2,…,参数n) 调用方法时,不管后面参数多少个,方法调用的括号都可以不写,参数个数多时推荐写上 但是定义方法时: 使用do~end时,可以省略把参数列表括起来的() 使用{}时,只有在没有参数的时候才可以省略把参数列表括起来的(),有一个以上的参数就不能省略 (1)Ruby中有些方法看起来很像运算符,如数组或散列下标的[],+,-等都是方法 在用方法实现的运算符中,有的可以重新定义,有的不行,见第九章 (2

零长度的数组【转】

原文链接:http://www.cnblogs.com/dolphin0520/p/3752492.html 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来的好. 在GNU的指南中,它是如此写道: st

《Effective Java》第7章 方法

第38条:检查参数的有效性 对于公有的方法,要用javadoc的@throws标签(tag)在文档中说明违反参数值限制时会抛出的异常.这样的异常通常为IllegalArgumentException, IndexOutOfBoundsException或NullPointerException. 非公有的方法通常应该使用断言(assertion)来检查它们的参数,具体做法如下所示: 第39条:必要时进行保护性拷贝 没有对象的帮助时,虽然另个类不可能修改对象的内部状态,但是对象很容易在无意识的情况

《Effective Java 2nd》第7章 方法

目录 第38条 检查参数的有效性 第39条 必要时进行保护性拷贝 第40条 谨慎设计方法签名 第41条 慎用重载 第42条 慎用可变参数 第43条 返回零长度的数组或集合,而不是null 第44条 为所有导出的API元素编写文档注释 关注点:可用性.健壮性.灵活性 第38条 检查参数的有效性 在编写方法或者构造器的时候,应该考虑参数有哪些限制,并显式检查 第39条 必要时进行保护性拷贝 如果类具有从客户端得到或者返回到客户端的可变组件,为了维持不可变性,必要时进行保护性拷贝. 否则,在文档中写明