第54条 - 返回空集合或数组,而不是null

💡 原文约300字/词,阅读约需2分钟。
📝

内容提要

不要返回null,而是返回空的集合或数组。返回null需要额外的客户端处理,容易出错。应该使用空的集合或数组来代替null,可以提高性能。使用不可变的空集合或数组可以避免不必要的内存分配。总之,不要返回null,而是返回空的集合或数组。

🎯

关键要点

  • 不要返回null,而是返回空的集合或数组。
  • 返回null需要额外的客户端处理,容易出错。
  • 客户需要添加冗余检查来避免异常。
  • 忽略这些检查可能导致错误。
  • 返回null会使实现方法变得困难。
  • 除非证明是性能瓶颈,否则不必担心空集合或数组的分配性能。
  • 使用空集合或数组代替null。
  • 不可变的集合可以重复返回,避免不必要的内存分配。
  • 返回相同的空数组,而不是每次都创建新的。
  • 示例代码中展示了错误和正确的返回方式。
  • 结论:永远不要返回null,始终优先返回空集合或数组,以简化API,避免错误,并且对性能影响很小。

延伸问答

为什么不应该返回null而是返回空集合或数组?

返回null需要额外的客户端处理,容易出错,而返回空集合或数组可以简化API并避免错误。

返回空集合或数组对性能有影响吗?

除非证明是性能瓶颈,否则不必担心空集合或数组的分配性能。

如何正确返回空集合或数组?

可以使用Collections.emptyList()或Collections.emptySet()来返回不可变的空集合,或者返回一个空数组。

返回null会导致什么问题?

返回null会使客户端需要添加冗余检查,忽略这些检查可能导致异常和错误。

使用不可变集合有什么好处?

不可变集合可以重复返回,避免不必要的内存分配,提高性能。

示例代码中如何处理返回空集合的情况?

示例代码中使用了条件判断,如果集合为空则返回Collections.emptyList(),否则返回实际的集合。

➡️

继续阅读