private final String[] okFileExtensions = new String[] { "csv" };
Был бы кто-то объяснять почему {}
записан после объявления Массива строк?
Спасибо.
Это массив из одного элемента. В данном случае содержащий строку
"csv"
.
При записи в рамках декларации это может быть записано в более лаконичной форме:
private final String[] okFileExtensions = { "csv" };
Массивы с несколькими элементами используют запятую между значениями. Никаких значений не обязательно должно быть вообще.
private final String[] okFileExtensions = { "csv", "tsv" };
private final String[] noFileExtensions = { };
Стоит отметить, что хотя ссылка является окончательной, массив - нет. Поэтому вы можете записать:
okFileExtensions[0] = "exe";
Способ обойти это - переключиться на коллекции и использовать немодифицируемую реализацию:
private final Set<String> okFileExtensions = Collections.unmodifiableSet(
new HashSet<String>(Arrays.asList({
"csv"
}));
JDK8 предназначен для усовершенствования коллекций, которые сделают это более лаконичным. Возможно List
и Set
литералы внутри языка. Возможно:
private final Set<String> okFileExtensions = { "csv" };
Коллекции, как правило, предпочтительнее массивов (для ссылочных типов).
Это действительный синтаксис Java для объявления массива.
Вы можете использовать это, когда передаете массив без объявления переменной:
public void printArray( String [] someArray ) {
for( String s : someArray) {
System.out.println( s );
}
}
И вызывать его следующим образом:
printArray( new String [] { "These", "are", "the", "contents"} );
Кудрявые скобки можно использовать только при объявлении массива, поэтому нельзя:
Stirng [] a;
a = {"on", "two"};
Я думаю, что менее подробное (также запутащее) декларация была бы:
private final String[] okFileExtensions = {"csv"};