中括弧を使用して配列ではない変数を初期化しようとすると、コンパイルエラーが発生します。Java文法変数宣言生成規則
例: "のjavac" を使用して
public class test1 {
public static void main(String[] args) {
double a = {1.5,6.3};
}
}
、私はこのコンパイル・エラーが発生します:
test1.java:13: error: illegal initializer for double
double a = {1.5,6.3};
^
1 error
しかし、私はJavaの文法を勉強していると私は(The Java Language Specificationから)以下の作品が見つかりました:
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
VariableDeclarator:
VariableDeclaratorId
VariableDeclaratorId = VariableInitializer
VariableDeclaratorId:
Identifier
VariableDeclaratorId [ ]
VariableInitializer:
Expression
ArrayInitializer
ArrayInitializer:
{ VariableInitializersopt ,opt }
これらのルールを使用すると、上のコードを正常にコンパイルできます(これを試しましたjflexと文法が指定された.cup仕様ファイルを使用するコンパイラ) これはなぜ可能ですか?私が無視するものはありますか?
ありがとうございます。
@ElliottFrischこれは公式Java仕様の文法です。私はそれが間違っていないと推測できると思う。 – sepp2k
@ sepp2k * * OPの(存在しない)実装を**意味する**は**不完全でなければなりません。 –