java - 奇怪的字符串数组声明语法

标签 java arrays syntax

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 旨在增强集合,使其更加简洁。可能是语言中的 ListSet 文字。可能:

private final Set<String> okFileExtensions = { "csv" };

集合通常应该优先于数组(对于引用类型)。

关于java - 奇怪的字符串数组声明语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042944/

相关文章:

java - 英制 到 公斤 转换器

java - 寻找 double 子集的有效算法和子集在一起

java - 解析文本文件的最简洁方法

javascript - 在javascript中测试多维数组

java - mySQL 查询在 java 中给出语法错误,但在 mySQL Workbench 中工作正常

java - 如何判断命令行参数是否包含流重定向

Java,设计模式 : Multiple event sources and One event Handler

java - 将 Processing 草图保存到 PNG 文件,服务器端没有 GUI/显示

c - 解释qsort中的C代码行

c++ - 参数和成员变量同名不好吗?