如下代码,通常用户列表为空时,会习惯性返回null,因为这时会认为:null返回值比零长度数组更好,因为它避免了分配数组所需要的开销. private final List<UserBean> UserList = null; public List<UserBean> getUserBean(){ if(UserList.size() == 0){ return null; }else{ return UserList; } } 但这种观点是站不住脚的,原因如下: 1) 在这个级…
<<Effective Java>> 第四十三条:返回零长度的数组或者集合,而不是null 假设一个方法的返回值类型是集合或者数组 .假设在方法内部须要返回的集合或者数组是零长度的,也就是没有实际对象在里面, 我们也应该放回一个零长度的数组或者集合,而不是返回null. 假设返回了null,client程序猿就要检測返回的是不是null.然后才干 进行下一步操作.否则就会引发NullPointException.可是假设是返回的的是空数组或者集合,就不会再兴许的使用这个对象上,引发…
返回零长度的数组或集合,而不是null   像下面的方法并不少见: private final List<Cheese> cheesesInStock = ...; /** * @return an array containing all of the cheeses in the shop, * or null if no cheese are available for purchase. */ public Cheese[] getCheeses(){ if(cheesesInStoc…
如果一个方法的返回值类型是集合或者数组 ,如果在方法内部需要返回的集合或者数组是零长度的,也就是没有实际对象在里面, 我们也应该放回一个零长度的数组或者集合,而不是返回null.如果返回了null,客户端程序员就要检测返回的是不是null,然后才能 进行下一步操作,否则就会引发NullPointException.但是如果是返回的的是空数组或者集合,就不会再后续的使用这个对象上,引发 空指针异常,我们可以根据代码的行为和表现,来判断数组和集合是不是为空.…
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…
60.性能考虑,数组是首选,在基本类型处理方面.数组还是占优势的,并且集合类的底层也都是通过数组实现.建议在性能要求较高的场景中使用数组替代集合. 61.假设有必要.使用变长数组:我们能够通过对数组扩容"婉转"地解决数组扩容问题.以下採用的是Arrays数组工具类的copyOf方法.产生了一个newLen长度的新数组,并把原有的值拷贝了进去,之后就能够对超长的元素进行赋值了 62.警惕数组的浅拷贝 Person[] p=new Person[5]; Person[] p2=Arrays…
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 23. 优先使用类层次而不是标签类 有时你可能会碰到一个类,它的实例有两个或更多的风格,并且包含一个标签属性(tag field),表示实例的风格. 例如,考虑这个类,它可…
原文链接:http://www.cnblogs.com/dolphin0520/p/3752492.html 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来的好. 在GNU的指南中,它是如此写道: st…
Feature Return empty arrays or collection Return nulls Avoids the expense of allocating the array N Y Return value is immutable which may be shared freely Y N Standard idiom for dumping items from a collection into a typed array public class Shop { /…