愚蠢的问题,但是为什么下面的行会编译?
int[] i = new int[] {1,};
正如您所看到的,我没有输入第二个元素并在那里留下了逗号。即使您希望它不会编译,仍然可以编译。
我想是因为 ECMA 334 标准说:
array-initializer:
{ variable-initializer-list(opt) }
{ variable-initializer-list , }
variable-initializer-list:
variable-initializer
variable-initializer-list , variable-initializer
variable-initializer:
expression
array-initializer
如您所见,允许使用尾随逗号:
{ variable-initializer-list , }
↑
附:以获得一个好的答案(即使许多用户已经指出了这一事实)。 :)
尾随逗号可用于简化自动代码生成器的实现(生成器可以避免测试初始化程序中的最后一个元素,因为它应该在没有尾随逗号的情况下编写)和使用预处理器指令的条件数组初始化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)