Dokumentacja Java dla metody
String[] java.io.File.list(FilenameFilter filter)
zawiera to w opisie zwrotów:
Tablica będzie pusta, jeśli katalog jest pusty lub jeśli żadne nazwy nie zostały zaakceptowane przez filtr.
Jak zrobić coś podobnego i zainicjować tablicę String (lub inną tablicę w tym zakresie), aby miała długość 0?
java
arrays
initialization
Ron Tuffin
źródło
źródło
null
w tym szczególnym przypadku.Odpowiedzi:
Jak powiedzieli inni,
new String[0]
rzeczywiście utworzy pustą tablicę. Jest jednak jedna fajna rzecz dotycząca tablic - ich rozmiar nie może się zmienić, więc zawsze możesz użyć tego samego odwołania do pustej tablicy. Więc w swoim kodzie możesz użyć:
private static final String[] EMPTY_ARRAY = new String[0];
a potem po prostu wracaj za
EMPTY_ARRAY
każdym razem, gdy tego potrzebujesz - nie ma potrzeby tworzenia nowego obiektu za każdym razem.źródło
private static final String[] EMPTY_ARRAY = {};
EMPTY_ARRAY[0]
- to próba uzyskania dostępu do elementu 0, który nie istnieje ...String[] str = new String[0];
?źródło
Ale
return {};
nie będzie działać, ponieważ brakuje informacji o typie.
źródło
return new String[] { };
ireturn new String[0];
oba będą działać.Ok, faktycznie znalazłem odpowiedź, ale pomyślałem, że i tak „zaimportuję” pytanie do SO
String[] files = new String[0];
lub
int[] files = new int[0];
źródło
Możesz użyć ArrayUtils.EMPTY_STRING_ARRAY z org.apache.commons.lang3
import org.apache.commons.lang3.ArrayUtils; class Scratch { public static void main(String[] args) { String[] strings = ArrayUtils.EMPTY_STRING_ARRAY; } }
źródło
Stwórz funkcję, która nie zwróci wartości null, zamiast tego zwróci pustą tablicę, którą możesz przeczytać poniższy kod, aby ją zrozumieć.
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; }
źródło