带逗号但没有逗号的数组

Sur*_*nga 2 java arrays

我正在创建具有少量元素的String数组.那时我注意到我在第一个元素之后放了逗号,它仍然是编译的.我以为它不会编译.然后我打印尺寸,它说1

  String args [] = {request.getParentMessageID() , };
  System.out.println(args.length);
Run Code Online (Sandbox Code Playgroud)

所以

String args [] = {request.getParentMessageID() , };  and String args [] = {request.getParentMessageID()};
Run Code Online (Sandbox Code Playgroud)

两者都表现得一样.

有人可以解释为什么这些没有什么不同以及为什么要编译.

Roh*_*ain 5

Trailing comma在这样的数组初始化中ignored by compiler.这些通常被添加,以便稍后在向数组添加内容时,只需要添加元素而不必担心逗号.

因此它是允许的并且是有效的语法.这也列在JLS - Section#10.6 (Array Initializers): -

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