Java 中方法声明的语法如下所示:
method_declaration
::=
{ modifier } type identifier
"(" [ parameter_list ] ")" { "[" "]" }
( statement_block | ";" )
我想知道方括号是什么意思。
- 谁能给我一个例子?
- Java 中的方法声明是否像上面那样(泛型呢)?
- 在哪里可以找到适用于 Java 的完整且实际的 BNF 语法?
Java 中方法声明的语法如下所示:
method_declaration
::=
{ modifier } type identifier
"(" [ parameter_list ] ")" { "[" "]" }
( statement_block | ";" )
我想知道方括号是什么意思。
方括号表示该方法返回一个数组。例如,您可以编写一个返回 int 数组的方法:
int method()[] { … }
不过,很多人不熟悉这种语法,最好避免使用。
您可以在此处找到 java 7 的完整语法:http: //docs.oracle.com/javase/specs/jls/se7/html/jls-18.html
这是一个遗留结构。从 JLS(§8.4. 方法声明):
为了与旧版本的 Java SE 平台兼容,允许返回数组的方法声明将(部分或全部)空括号对放置在形参列表之后,这些空括号对构成数组类型的声明。以下过时的产品支持这一点,但不应在新代码中使用。
MethodDeclarator: MethodDeclarator [ ]
因此,它是有效的 Java(尽管我从未见过在实际代码中使用过这种结构)。
至于你引用的语法,它似乎不完整。例如,它似乎不包含可选throws
子句。此外,它只允许一对方括号,method_declaration
而官方语法允许任意数量的这样的对。
权威参考是 Java 语言规范,第 18 章语法。
{ ... }
代表0..*
(零次或多次)
由于您链接的文档已有 17 年历史,因此缺少泛型。
官方Java 语言规范使用这种特殊语法:http ://docs.oracle.com/javase/specs/jls/se7/html/jls-2.html#jls-2.4
我找不到真正的 Java BNF 语法,它比你的更过时。
括号用于作为数组的返回类型,例如:
Sting myMethodThatRetrunsStringArray[] {
//Implementation
// return a String array
}
我们说 } 记号在 { 记号的右侧,尽管它在这个二维表示中出现在 { 记号的下方和左侧。这种关于使用单词 left 和 right 的约定允许我们谈论例如二元运算符的右侧操作数或赋值的左侧。