private final String[] okFileExtensions = new String[] { "csv" };
Может кто-нибудь объяснит, почему {}
написан после объявления массива String?Декларация строкового массива Синтаксис
Спасибо.
private final String[] okFileExtensions = new String[] { "csv" };
Может кто-нибудь объяснит, почему {}
написан после объявления массива String?Декларация строкового массива Синтаксис
Спасибо.
Это массив одного элемента. В этом случае, содержащий String
"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" };
Коллекции обычно должны быть предпочтительнее, чем массивы (для ссылочных типов).
Если вы хотите добавить несколько значений расширения файла в массив, вы просто разделите их запятыми, например. private final String [] okFileExtensions = {"csv", "txt", "sql"}; – TabbyCool
Теперь я добавил это к моему ответу. –
'Коллекции обычно должны быть предпочтительнее, чем массивы (для ссылочных типов), которые во многом зависят от цели и объема массива. Как указано здесь, это слишком общее для моего вкуса. – rsp
Создание массива strings
inline.
Это действительный синтаксис 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"};
Возможно ... но синтаксис 'new
Рассмотрите возможность использования перечисления вместо явного жесткого кодирования расширений файлов. –