2013-03-23 59 views
3

在Java方法声明语法方法声明的语法是类似以下内容:在Java中

Java method declaration BNF:

method_declaration 
    ::= 
    { modifier } type identifier 
    "(" [ parameter_list ] ")" { "[" "]" } 
    (statement_block | ";") 

而且我想知道什么做的方括号表示。

  1. 任何人都可以举个例子吗?
  2. 在Java中的方法声明看起来像上面(泛型)?
  3. 我在哪里可以找到Java的完整和实际的BNF语法?
+0

您的链接页面是从1996年...很久以前,和一个疑问源 – PeterMmm 2013-03-23 10:11:23

+0

我知道,所以我在哪里可以找到完整和实际的BNF语法的Java? – midas 2013-03-23 10:12:28

+2

唯一有效的来源:http://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html – PeterMmm 2013-03-23 10:15:02

回答

5

方括号用于指示该方法返回一个数组。例如,你可以写一个返回一个int数组的方法:

int method()[] { … } 

很多人不熟悉的语法虽然,这是最好的避免。

你会发现对Java 7这里的完整语法:http://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html

+0

也是这样:method_declaration :: = {modifier} type {“[ “”“”“ ”(“[parameter_list]”)“{”[“”]“} (statement_block |”;“) – PeterMmm 2013-03-23 10:16:33

+0

这是多余的,彼得;返回类型已经允许指定数组类型。 – Joni 2013-03-23 10:22:17

0

支架用于返回类型为数组,例如:

Sting myMethodThatRetrunsStringArray[] { 
//Implementation 
// return a String array 
} 
3

这是一个遗留的构造。从JLS(§8.4. Method Declarations):

为了与旧版本的Java SE平台的相容性,它返回一个阵列的方法的声明被允许放置(一些或全部),其形成的空托架对在形式参数列表之后声明数组类型。这由以下废弃产品支持,但不应用于新代码。

MethodDeclarator: 
    MethodDeclarator [ ] 

因此,有效的Java(尽管我从来没有见过这种结构在实际代码中使用)。

至于你引用的语法,它似乎不完整。例如,它似乎没有包含可选的throws子句。此外,它只允许在method_declaration中的一对方括号,而官方语法允许任意数量的这样的对。

权威的参考资料是Java语言规范Chapter 18. Syntax