SLa*_*aks 35
如果你有一个带有数组的函数,并且你想给它一个没有任何内容的数组,你传递一个零长度的数组.
如果您从外部源读取数组,并且它恰好没有任何项,那么您将获得零长度数组.
Seb*_*ski 11
假设您的意思是在Java中,您可以毫无问题地迭代零长度数组,但如果变量设置为,则无法执行此操作null.
String[] myArr = new String[0];
for (String str : myArr) {
// do something here
}
Run Code Online (Sandbox Code Playgroud)
如果设置myArr到null相反,你会得到一个NullPointerException在这个循环.
没有理由不允许零长度数组并支持它们避免特殊情况下的许多事情.
例如: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")?
禁用零长度数组会大大增加语言的复杂性,同时增加很少的优势.
它们让您在避免空值的同时保持 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,则永远不会进入循环体。
| 归档时间: |
|
| 查看次数: |
22840 次 |
| 最近记录: |