Как я могу инициализировать массив String с длиной 0 в Java?

Документы Java для метода
String[] java.io.File.list(FilenameFilter filter)
включает это в описание возврата:

Массив будет пуст, если каталог пуст или если никакие имена не были приняты фильтром.

Как мне сделать аналогичную вещь и инициализировать массив String (или любой другой массив, если на то пошло) иметь длину 0?

Ответ 1

Как говорили другие,

new String[0]

действительно создаст пустой массив. Тем не менее, есть одна хорошая вещь о массивах - их размер не может измениться, поэтому вы всегда можете использовать ту же пустую ссылку на массив. Поэтому в вашем коде вы можете использовать:

private static final String[] EMPTY_ARRAY = new String[0];

а затем просто возвращайте EMPTY_ARRAY каждый раз, когда вам это нужно - нет необходимости создавать новый объект каждый раз.

Ответ 2

String[] str = new String[0];?

Ответ 3

String[] str = {};

Но

return {};

не будет работать, поскольку информация о типе отсутствует.

Ответ 4

Хорошо, я действительно нашел ответ, но думал, что буду "импортировать" вопрос в SO в любом случае

String[] files = new String[0];
или
int[] files = new int[0];

Ответ 5

Вы можете использовать ArrayUtils.EMPTY_STRING_ARRAY от org.apache.commons.lang3

import org.apache.commons.lang3.ArrayUtils;

    class Scratch {
        public static void main(String[] args) {
            String[] strings = ArrayUtils.EMPTY_STRING_ARRAY;
        }
    }

Ответ 6

Сделайте функцию, которая не вернет null, вместо этого вернет пустой массив, который вы можете пройти ниже кода, чтобы понять.

    public static String[] getJavaFileNameList(File inputDir) {
    String[] files = inputDir.list(new FilenameFilter() {
        @Override
        public boolean accept(File current, String name) {
            return new File(current, name).isFile() && (name.endsWith("java"));
        }
    });

    return files == null ? new String[0] : files;
}

Ответ 7

Все, что вам нужно сделать, это

String str = "";
String[] newString = new String[str.length()];

Это даст пустой String Array.

Из моего видео

Спасибо, его Пите! Этот ответ по-прежнему важен, так как показывает, как строка пуста и как она работает. Например, массив int не может изменить размер или изменить его на другой размер из-за того, что 0 является целым числом. Произойдет ошибка ArrayIndexOutOfBoundsException. Должна быть разница между String и int. Однако опять же, String имеет двойные кавычки и работает для изменения размера. Конечно, это более длинный путь. Это все еще показывает рассуждение между int и главным образом String.