零长度数组

dev*_*per 15 java

可能重复:
零长度数组的用法是什么?

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

SLa*_*aks 35

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

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

  • 使用这种方法意味着需要更少的空检查 (9认同)

Seb*_*ski 11

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

String[] myArr = new String[0];
for (String str : myArr) {
  // do something here
}
Run Code Online (Sandbox Code Playgroud)

如果设置myArrnull相反,你会得到一个NullPointerException在这个循环.


Joa*_*uer 6

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

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

public void foo(String arg1, String... varArg);
Run Code Online (Sandbox Code Playgroud)

被称为这样:

foo("bar");
Run Code Online (Sandbox Code Playgroud)

另外,应该是什么回报值"".toByteArray("UTF-8")

禁用零长度数组会大大增加语言的复杂性,同时增加很少的优势.


I82*_*uch 5

它们让您在避免空值的同时保持 API 一致。例如,假设您有一个返回某个数组的方法。如果没有有效结果,您将返回一个零长度数组。相反,如果您被迫返回 null 来表示这一点,则客户端代码将不得不以不同的方式处理这两种情况。使用零长度数组,如下代码仍然有效:

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

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