博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第43条:返回零长度的数组或者集合,而不是null
阅读量:7250 次
发布时间:2019-06-29

本文共 836 字,大约阅读时间需要 2 分钟。

private final List
cheesesInStock = ...;public Cheese[] getCheese() { if(cheesesInStock.size() == 0) return null; ...}

如果返回null,

在客户端处理代码就需要有额外的代码来处理null返回值:

Cheese[] cheeses = shop.getCheeses();if(cheeses != null && Arrays.asList(cheese).contains(Cheese.STILTON))    System.out.println("Jolly good");}

而不是:

Cheese[] cheeses = shop.getCheeses();if( Arrays.asList(cheese).contains(Cheese.STILTON))    System.out.println("Jolly good");}

 

认为null返回值比零长度数组更好,因为避免了分配数组所需要的开销,是不对的。

1.除非分析表明这是方法的确影响了性能

2.对于不返回任何类型调用,返回同一个零长度数组是可能的

 

Collections类提供当需要空集合时都返回同一个不可变的空集合的方法:

public List
getCheeseList() { if(cheeseInstock.isEmpty)) { return Collections.emptyList(); else return new ArrayList
(cheesesInStock);}

 

转载于:https://www.cnblogs.com/13jhzeng/p/5745744.html

你可能感兴趣的文章
sync logins from ASE 12.5.4 to ASE 15.5
查看>>
一个类似fork×××的效果
查看>>
Animation 动画的相关运用
查看>>
开源IDE LightTable的使用
查看>>
Hyper-V在线扩展磁盘空间总结
查看>>
Microsoft File Transfer Manager
查看>>
Hyper-V 3.0 - 存储迁移(简单)
查看>>
CentOS 7 Docker方式安装 PHP,Mysql,phpmyadmin 过程记录
查看>>
项目质量管理重点
查看>>
红冒系列-Systemctl命令详解说明
查看>>
Exchange2010开启outlook anywhere
查看>>
Linux who 命令 – 显示系统登录者
查看>>
(13)Powershell中的比较运算符与位运算符
查看>>
linux双网卡策略路由测试
查看>>
运维角度浅谈MySQL数据库优化
查看>>
如何使用Tunnel SDK上传/下载MaxCompute复杂类型数据
查看>>
ORACLE AWR简介
查看>>
我的友情链接
查看>>
为什么企业核心路由器必须设置时间?
查看>>
Action Bar(操作栏)
查看>>