零长度数组

时间:2011-03-23 13:11:14

标签: java

  

可能重复:
  What is the usage of array of zero length?

零长度数组的目的是什么。它们是否有用或者只是因为语法允许?

6 个答案:

答案 0 :(得分:34)

如果你有一个接受数组的函数,并且你想给它一个没有任何内容的数组,你传递一个零长度的数组。

如果您从外部源读取数组,并且它恰好没有任何项目,您将获得零长度数组。

答案 1 :(得分:11)

假设您在Java中的意思是,您可以毫无问题地迭代零长度数组,但如果变量设置为null则无法执行此操作。

String[] myArr = new String[0];
for (String str : myArr) {
  // do something here
}

如果您将myArr设置为null,则会在此循环中获得NullPointerException

答案 2 :(得分:6)

没有理由不允许零长度数组并支持它们避免特殊情况下的许多事情。

例如:如果定义如下的方法,编译器应该传递给varArg

public void foo(String arg1, String... varArg);
像这样调用

foo("bar");

此外,"".toByteArray("UTF-8")的返回值是什么?

禁用零长度数组会使语言复杂化,同时增加很少的优势。

答案 3 :(得分:4)

它们可以让您保持API一致,同时避免使用空值。例如,假设您有一个返回某个数组的方法。如果没有有效结果,则返回零长度数组。相反,如果您被迫返回null来发出信号,那么客户端代码必须以不同的方式处理这两种情况。使用零长度数组,以下代码仍可正常工作:

for (int i = 0; i < array.length; i++) {
   // do something with the array entries
}

如果array.length == 0,则永远不会输入循环体。

答案 4 :(得分:1)

如果前提条件是数组始终存在,则避免必须检查null。

答案 5 :(得分:0)

没有方法,成员或行为的对象的目的是什么?数组只是指向连续内存块的指针,因此0是有效长度。