4

Javaでのメソッド宣言の文法は、次のようなものです。

Javaメソッド宣言BNF:

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

そして、角かっこはどういう意味か疑問に思っています。

  1. 誰か私に例を教えてもらえますか?
  2. Javaでのメソッド宣言は上記のようになりますか(ジェネリックはどうですか)?
  3. Javaの完全で実際のBNF文法はどこにありますか?
4

5 に答える 5

6

角かっこは、メソッドが配列を返すことを示します。たとえば、intの配列を返すメソッドを次のように記述できます。

int method()[] { … }

ただし、多くの人はこの構文に精通していないため、避けるのが最善です。

java 7の完全な構文は、次の場所にあります:http ://docs.oracle.com/javase/specs/jls/se7/html/jls-18.html

于 2013-03-23T10:11:28.670 に答える
3

これはレガシー構造です。JLSから(§8.4。メソッド宣言):

古いバージョンのJavaSEプラットフォームとの互換性のために、配列を返すメソッドの宣言では、正式なパラメーターリストの後に配列型の宣言を形成する空のブラケットペア(の一部またはすべて)を配置できます。これは、次の廃止された製品でサポートされていますが、新しいコードでは使用しないでください。

MethodDeclarator:
     MethodDeclarator [ ]

したがって、これは有効なJavaです(実際のコードでこの構造が使用されているのを見たことがありませんが)。

あなたが引用する文法に関しては、それは不完全なようです。たとえば、オプションのthrows句が含まれていないようです。method_declarationまた、公式の文法ではそのようなペアをいくつでも許可しているのに対し、角括弧のペアは1つしか許可されていません。

決定的なリファレンスは、Java言語仕様の第18章です。構文

于 2013-03-23T10:18:28.670 に答える
1

{ ... }の略0..*(0回以上)

リンクしたドキュメントが17年前のものであるため、ジェネリックが欠落しています。

公式のJava言語仕様では、次の特定の構文を使用しています。http: //docs.oracle.com/javase/specs/jls/se7/html/jls-2.html#jls-2.4

あなたよりも時代遅れではないJava用の本当のBNF文法を見つけることができませんでした。

于 2013-03-23T10:15:16.260 に答える
0

角かっこは、配列である戻り型に使用されます。次に例を示します。

Sting myMethodThatRetrunsStringArray[] {
//Implementation
// return a String array
}
于 2013-03-23T10:13:00.950 に答える
0

}トークンは、{トークンの右側にありますが、この2次元表現では、{トークンの左側にあります。左と右という単語の使用に関するこの規則により、たとえば、二項演算子の右側のオペランドまたは割り当ての左側について話すことができます。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-2.html

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html

于 2013-03-23T10:13:46.777 に答える