Java中的数组创建语法

3

以下是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} [ ]}

为什么这里要用括号来表示Dimsnew PrimitiveType DimExprs [Dims]?如果它在括号中,那么我可以写成这样:new int [2][2] [[] []],其中[2][2]DimExprs部分,[] []Dims部分。我在这里做错了什么?

1个回答

1
似乎答案就在我的眼前,但我不知道为什么错过了它。以下是Java规范的原因解释:
在产生式的右侧使用语法[x]表示x出现零次或一次。也就是说,x是一个可选符号。包含可选符号的备选项实际上定义了两个备选项:一个省略了可选符号,另一个包括它。
这意味着您可以编写String [] [] [] s = new String [2] [] []; 链接:https://docs.oracle.com/javase/specs/jls/se8/html/jls-2.html#jls-2.4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接