2016-09-10 13 views
0
int[] arr = {1, 2, 3}; 

arr = {1, 2, 3} //Error 
arr = new int[] {1, 2, 3}; //No Error 

私の質問はなぜそうですか? 2行目と3行目の違いはどういう意味ですか?配列リテラルは宣言にのみ使用できますか?

+1

を好きなら

は、パーサについてのいくつかのことを読んでください。言語が間違った構文をサポートすることができる、またはサポートする必要があると思われるかどうかに関わらず、単純にはそうではありません。 –

+0

Java言語の父親が考えたすべてが100%の意味を成し遂げたわけではありません。私はこれらのルールが解析を容易にする理由を考えることさえできません。 – GhostCat

+1

これはjavaかC#ですか?両方の言語で – Rob

答えて

2

これは、JavaやC#のバディの仕組みで、実際にはこれに文句を言うことはできません。プログラミングのセマンティクスに着目すると、2行目にはあまり曖昧さがあり、本当に高度なものについて考えるとパースツリーのように、2行目のような文のために構築する必要があります。私たちは大きな問題に遭遇しています。あなたは、Java言語が指定されているだけの方法ですlink to parse trees

関連する問題