2009-08-16 8 views
0

これはJava 5ではコンパイルされるが、Java 6ではコンパイルされない理由は何ですか?Java 5および6のforステートメントの最終変数

for(final int k=0; k<10; k++); 

これの背後にある論理は何ですか? Java 5と6の間の変数の範囲の変更

Sunのドキュメントではこれについては何も見つかりません。

+3

これはJava 5でもコンパイルしてはいけません。 –

+0

これはスコープの問題ではありません。 –

+0

私は、なぜその変数をそのステートメントのfinalとしてマークしたいのか理解できません。 – MattC

答えて

1

彼らはバグを修正したようですね。コンパイルしないでください。

5

私にとっては、Java 6またはJava 1.3.1でコンパイルされません。 (私は他のバージョンに簡単にアクセスすることはできません。)

私は非常にそれがjavacのいずれかの「正常な」バージョンでコンパイルすることはないだろう - kが最終的に宣言されたように、ループのk++一部が無効です。

あなたはJava 5でコンパイルできますか?どのプラットフォームでどのバージョンが正確ですか? IDEを使用していたのですか、それともコマンドラインからのものでしたか?

1

Java 5でもコンパイルされません。

2

k++のため、どのバージョンのJavaでもコンパイルしないでください。

for-eachループと混同されていませんか?以下はJava 5以降でコンパイルするためです:

for (final int k : someIntArray) { ... } 
関連する問題