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

有时候会有人认为:null返回值比零长度数组或者集合的方法,几乎每次用到该方法时都需要这种曲折的处理方式。这样做很容易出错,因为编写客户端程序的程序员可能会忘记写这种专门的代码来处理null返回值。这样的错误也许几年都不会被注意到,因为这样的方法通常返回一个或者多个对象。返回null而不是零长度的数组也会使返回数组或者集合的方法本身变得更加复杂,这一点虽然不是特别重要,但是也值得注意。

有时候会有人认为:null返回值比零长度数组更好,因为他避免了分配数组所需要的开销。这种观点是站不住脚的,原因有两点。第一,在这个级别上担心性能问题是不明智的,除非分析表明这个方法正式造成性能问题的真正源头。第二,对于不返回任何元素的调用,每次都返回同一个零长度数组是有可能的,因为零长度数组是不可变的,而不可变对象有可能被自由的共享。实际上,当你使用标准做法把一些元素从一个集合转存到一个类型化的数组中时,他正是这么做的。

在这种习惯用法中,零长度数组常量被传递给toArray方法,以指明所期望的返回类型。正常情况下,toArray方法分配了返回的数组,但是,如果集合是空的,他将使用零长度的输入数组,Collection.toArray(T[])的规范保证:如果输入数组大到足够容纳这个集合,他就将返回这个输入数组。因此,这种做法永远也不会分配零长度的数组。

简而言之,返回类型为数组或集合的方法没理由返回null,而不是返回一个零长度的数组或者集合。这种习惯做法(指返回null)很有可能是从C程序设计语言中沿袭过来的,在C语言中,数组长度是与实际的数组分开返回的。在C语言中,如果返回的数组长度为零,再分配一个数组就没有任何好处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值