这是用Java创建数组的语法:
ArrayCreationExpression:
new PrimitiveType DimExprs [Dims]
new ClassOrInterfaceType DimExprs [Dims]
new PrimitiveType Dims ArrayInitializer
new ClassOrInterfaceType Dims ArrayInitializer
DimExprs:
DimExpr {DimExpr}
DimExpr:
{Annotation} [ Expression ]
Dims:
{Annotation} [ ] {{Annotation} [ ]}
为什么在这里:
new PrimitiveType DimExprs [Dims]
Dims
在方括号中?如果放在方括号中,则可以这样写:new int [2][2] [[] []]
其中[2][2]
是DimExprs
部分,而[] []
是Dims
部分。我在这里做错了什么? 最佳答案
答案似乎在我眼前,但我不知何故错过了它。这是Java规范中的原因:
生产形式右侧的语法[x]表示零或
x的一次出现。也就是说,x是一个可选符号。的
包含可选符号的替代实际上定义了两个
备选方案:一种省略可选符号,而另一种则包括
它。
这意味着您可以编写String[][][] s = new String[2][][];
链接:https://docs.oracle.com/javase/specs/jls/se8/html/jls-2.html#jls-2.4