private final String[] okFileExtensions = new String[] { "csv" };
有人请解释为什么在字符串数组声明后写{}
吗?
感谢。
答案 0 :(得分:16)
这是一个元素的数组。在这种情况下,包含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" };
集合通常应优先于数组(对于引用类型)。
答案 1 :(得分:4)
这是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"};
答案 2 :(得分:2)
创建一个strings
内嵌数组。
答案 3 :(得分:1)
我认为一个不那么冗长(也令人困惑)的宣言应该是:
private final String[] okFileExtensions = {"csv"};