private final String[] okFileExtensions = new String[] { "csv" };
有人能解释一下为什么在字符串数组声明后面要写
{}
吗?谢谢。
这是一个只包含一个元素的数组,在本例中该元素为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" };
通常情况下应该优先选择使用集合而不是数组(对于引用类型来说)。
这是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 <type>[] {...}
语法可以做更多的事情。 - Stephen C