小编Geo*_*off的帖子

允许“new int[] {0}[0] = 1;”的Java语法是什么?编译?

我使用Java\xc2\xae 语言规范 Java SE 8 版本作为参考。

\n

示例类:

\n
class MyClass {\n\n  void method() {\n    new int[] {0}[0] = 1;\n  }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

该代码new int[] {0}[0] = 1应该是一个赋值,因为0所创建的数组的索引被分配了值1

\n

赋值由LeftHandSide、赋值运算符和表达式组成。在此示例中,LeftHandSide 应为new int[] {0}[0]

\n

LeftHandSide 是 ExpressionName、FieldAccess 或ArrayAccess。在此示例中,LeftHandSide 应该是 ArrayAccess。

\n

问题出在 ArrayAccess 上。ArrayAccess 被定义为 ExpressionName(本示例中不是这种情况)或 PrimaryNoNewArray,然后是括号之间的表达式。

\n

该代码new int[] {0}是一个ArrayCreationExpression。Primary表达式可以ArrayCreationExpression 或 PrimaryNoNewArray。所以对我来说,ArrayAccess 的第二种情况似乎应该是 Primary 而不是 PrimaryNoNewArray。

\n

我知道 …

java grammar language-lawyer

15
推荐指数
1
解决办法
400
查看次数

标签 统计

grammar ×1

java ×1

language-lawyer ×1