java - 什么都不返回,使用 array == null 或 array.length == 0?

标签 java null empty-list

假设我有一个具有以下签名的函数:

Foo[] getSomeFoos() 
{
      //return null         --- option A 
      or 
      //return new Foo[0];  --- option B
}

返回指示没有返回元素的值的推荐做法是什么?每个选项的优缺点?

最佳答案

如果您的方法 GetSomeFoos() 实际上“找到”了 0 个元素,那么它应该返回 new Foo[0]

如果出现某种错误,您应该抛出一个Exception

原因是因为用户不应该寻找空值:

for (Foo f: GetSomeFoos()) {
    // do stuff
}

在上述情况下,如果 GetSomeFoos 返回 null,用户将不得不处理 NullPointerException。但是,如果返回一个空数组,代码将永远不会进入循环,用户也不必处理异常。

关于java - 什么都不返回,使用 array == null 或 array.length == 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809406/

相关文章:

android - 主要内容可从抽屉导航框架访问。

java - 使用 Java Config 覆盖 Autowiring setter

java - 理解Java中HashMap的逻辑

java:17: 错误:缺少返回语句

jsf - @ManagedProperty 在 CDI 托管 bean 中不起作用

F#:InvalidOperationException:输入序列的元素数量不足?

java - 在长时间事务中每次查询后是否应该关闭连接?

java - "Exception in thread "主要 "java.lang.NullPointerException"

swift - Swift 中的 UITableView 背景 View

Swift - 在 UITableViewController 中通过 Storyboard 显示一个带有空列表的复杂 View