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

pie*_*fou 3 java null empty-list

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

Foo[] getSomeFoos() 
{
      //return null         --- option A 
      or 
      //return new Foo[0];  --- option B
}
Run Code Online (Sandbox Code Playgroud)

返回值的建议做法是什么,表示没有返回元素?每个选项的优缺点是什么?

jjn*_*guy 11

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

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

原因是因为用户不必查找空值:

for (Foo f: GetSomeFoos()) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Joshua,我想我可以想到为什么我可以返回null.但通常我会返回空列表/数组. (3认同)