Массивы с нулевой длиной
Возможный дубликат:
Каково использование массива нулевой длины?
Какова цель массивов с нулевой длиной. Может быть, они используются или просто так, потому что синтаксис позволяет?
Ответы
Ответ 1
Если у вас есть функция, которая принимает массив, и вы хотите дать ему массив, в котором нет ничего, вы передаете массив нулевой длины.
Если вы читаете массив из внешнего источника и, как оказалось, не имеете никаких элементов, вы получите массив нулевой длины.
Ответ 2
Предполагая, что вы имеете в виду на Java, вы можете без проблем перебирать массивы нулевой длины, но вы не можете этого сделать, если для переменной установлено значение null
.
String[] myArr = new String[0];
for (String str : myArr) {
// do something here
}
Если вы установите вместо myArr
на null
, вы получите NullPointerException
в этом цикле.
Ответ 3
Нет причин не допускать массивы нулевой длины и поддерживать их, избегая особых случаев.
Например: что должен передать компилятору varArg
, если метод определен следующим образом:
public void foo(String arg1, String... varArg);
вызывается следующим образом:
foo("bar");
Также должно быть возвращаемое значение "".toByteArray("UTF-8")
?
Запрещение массивов нулевой длины значительно усложнит язык, добавив очень мало преимуществ.
Ответ 4
Они позволяют поддерживать совместимость API, избегая при этом нулевых значений. Например, скажем, у вас есть метод, который возвращает массив чего-то. Если нет действительных результатов, вы должны вернуть массив нулевой длины. Если вместо этого вы были вынуждены возвращать значение null, чтобы сигнализировать об этом, клиентский код должен был бы обрабатывать два случая по-разному. С массивом нулевой длины работает следующий код:
for (int i = 0; i < array.length; i++) {
// do something with the array entries
}
Если array.length == 0, то тело цикла никогда не вводится.
Ответ 5
Он избегает необходимости проверять значение null, если предварительным условием является то, что массив всегда присутствует.
Ответ 6
Какова цель объекта без методов, членов или поведения? Массив - это просто указатель на непрерывный блок памяти, поэтому 0 - допустимая длина.