Подтвердить что ты не робот

Использование массива нулевой длины

Например, мы можем построить такой массив следующим образом:

 new ElementType[0];

Я видел такую ​​конструкцию, но я не понимаю, почему это может быть полезно.

4b9b3361

Ответ 1

Пример. Скажем, у вас есть функция

public String[] getFileNames(String criteria) {

чтобы получить некоторые имена файлов. Представьте, что вы не найдете ни одного файла, удовлетворяющего критериям. Что вы возвращаете? У вас есть 2 варианта: либо вернуть значение null, либо массив 0-размера.

Вариант с размером массива 0 лучше, потому что ваш вызывающий объект не должен проверять NULL и может обрабатывать массив согласованным образом - скажем, в цикле (который был бы пусто в этом случае).

Там есть глава об этом в Эффективная Java, пункт 27

Ответ 2

В большинстве случаев легче работать с null, где null является очевидной альтернативой.

Предположим, вы хотите вернуть Iterable<String> содержащий (скажем) список соответствующих имен файлов... но по какой-то причине их нет. Вы можете вернуть null, чтобы указать это, но тогда вызывающий абонент должен иметь специальный случай. Вместо этого, если вы вернете пустую коллекцию, вызывающий может по-прежнему использовать расширенный цикл for:

for (String file : getFiles())

Итак, зачем использовать пустой массив вместо пустого ArrayList или что-то подобное? Массивы представляют собой фиксированный размер, поэтому пустой массив является фактически неизменным. Это означает, что вы можете сохранить единственное значение и вернуть его кому угодно, зная, что они ничего не могут с этим поделать. Это может быть очень полезно в некоторых ситуациях.

Ответ 3

это замена null, поскольку вам не нужно проверять значение null перед ее использованием. Более формально это частный случай специальный шаблон дизайна корпуса (также проверьте нулевой объект).

Другим идиоматическим использованием являются коллекции toArray:

List<String> list = new ... ;
// fill the list
String[] array = list.toArray(new String[0]);