本月决定重新看一下Effective Java中文版这本书,推荐学习技术的朋友阅读,本书以一种比较自由的方式将一些开发遇到的问题组织成10章,每一章都涉及软件涉及的一个主要方面,对我们学习和工作很有帮助。那我们闲话少说,国庆技术精进继续!!!

有时候会有人认为:null返回值比零长度数据更好,因为它避免了分配数组所需要的开销。 这种观点是站不住脚的,原因有两点。
-
在这个级别上担心性能问题是不明智的,除非分析表明这个方法正是造成性能问题的真正源头。
-
对于不返回任何元素的调用,每次都返回同一个零长度数组是有可能的,因为零长度数组是不可变的,而不可变对象有可能被自由地共享。
示例代码如下:
private static final Cheese[] EMPTY_CHEESE_ARRAY= new Cheese[0];
public static void main(String[] args) {
List<String>_elements = getAllElemnts();
if(_elements.isEmpty()) {
System.out.println("十一国庆节!");
}
}
public List<String> getAllElements() {
return null;
}
- 返回值为数组时,应返回零长度数组,代码为:
public static void main(String[] args) {
List<String> elements = getElemnts();
if( elements.isEmpty()) {
System.out.println("十一国庆节!");
}
}
public List<String> getElements() {
return new String[0];
}
- 优化: 每次都要初始化一个零长度的数组,为避免这种资源的浪费,可以再类中定义一个静态变量即为:
public static void main(String[] args) {
String[] elements = getElemnts();
if(elements.isEmpty()) {
System.out.println("十一国庆节!");
}
}
public String[] getElements() {
return EMPTY_STR;
}
private static final String[] EMPTY_STR = new String[0];
- 返回空list、set、map
在项目开发中,大多使用Collection,如Set,Map等,当返回值为空List是返回Collections.emptyList(),Collections库里也有emptyMap(), emptySet(),代码如下:
Collections.emptyList()
Collections.emptySet();
Collections.emptyMap();
public static void main(String[] args) {
Map<String> elements = getElemnts();
if(_elements.isEmpty()) {
System.out.println("十一国庆节!");
}
}
public Map<String> getElements() {
return Collections.emptyMap();
}
public static void main(String[] args) {
Set<String>_elements = getElemnts();
if(_elements.isEmpty()) {
System.out.println("十一国庆节!");
}
}
public List<String> getElements() {
return Collections.emptySet();
}