我使用Java\xc2\xae 语言规范 Java SE 8 版本作为参考。
\n示例类:
\nclass MyClass {\n\n void method() {\n new int[] {0}[0] = 1;\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n该代码new int[] {0}[0] = 1应该是一个赋值,因为0所创建的数组的索引被分配了值1。
赋值由LeftHandSide、赋值运算符和表达式组成。在此示例中,LeftHandSide 应为new int[] {0}[0]。
LeftHandSide 是 ExpressionName、FieldAccess 或ArrayAccess。在此示例中,LeftHandSide 应该是 ArrayAccess。
\n问题出在 ArrayAccess 上。ArrayAccess 被定义为 ExpressionName(本示例中不是这种情况)或 PrimaryNoNewArray,然后是括号之间的表达式。
\n该代码new int[] {0}是一个ArrayCreationExpression。Primary表达式可以是ArrayCreationExpression 或 PrimaryNoNewArray。所以对我来说,ArrayAccess 的第二种情况似乎应该是 Primary 而不是 PrimaryNoNewArray。
我知道 …