2013-03-23 105 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