【问题标题】:In Java, why does this array declaration compile? [duplicate]在 Java 中,为什么这个数组声明会编译? [复制]
【发布时间】:2016-02-17 23:52:27
【问题描述】:

我今天在正确编译的 Java 代码中注意到了这一点:

int[] content = {1,2,3,4,5,6,7,8,9,10, 11, 12, 13, 14, 15,};

15 之后的末尾有一个额外的逗号——所以我很好奇这是否是Java 中的预期内容。为什么编译器不会在这里报错?

【问题讨论】:

  • Java 中的另一个可憎之处;当然,在我的拙见中。

标签: java


【解决方案1】:

来自 Java 语言规范,section 10.6: Array initializers

尾随逗号可能出现在数组初始值设定项中的最后一个表达式之后,并且 被忽略。

推测:这使得通过注释掉任何一行(甚至是最后一行)来删除多行初始化程序中的项目变得很容易。

String[] NAMES = new String[] {
    "Shaggy",
    "Scooby",
    "Fred",
    "Velma",
    "Daphne",
//  "Scrappy Doo" 
}

【讨论】:

  • 我知道这有多方便,谢谢!!
  • 你的猜测是对的。在“The Java Programming Language”(Arnold-Gosling-Holmes)一书中,作者特别指出 这对多行初始化程序很方便,因此您可以重新排序、添加或删除值,而无需记住添加逗号旧的最后一行,或从新的最后一行中删除它.
【解决方案2】:

根据this section of the language specification,它被忽略:

数组初始值设定项是用逗号分隔的表达式列表,用大括号 { 和 } 括起来。

尾随逗号可能出现在数组初始化程序中的最后一个表达式之后并被忽略。

【讨论】:

    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    相关资源
    最近更新 更多