WindVoiceの日記: for( String name: args){~} 2
日記 by
WindVoice
今日、Sunから届いたCore Java Tech Tipsに、見慣れない記述がありました。
http://java.sun.com/developer/JDCTechTips/2005/tt0816.html#1
for (String name: args) {
~
}
……というのですが、サンプル全体を眺めてみると、
Perlでいうところのforeach $each ( %hash ){} みたいなもののようです。
しかし、入力して手元の環境でjavacしてみてもコンパイルエラーになります。
J2SE 5.0からの記述なのかなぁ(手元はJ2SE 1.4)。
http://java.sun.com/developer/JDCTechTips/2005/tt0816.html#1
for (String name: args) {
~
}
……というのですが、サンプル全体を眺めてみると、
Perlでいうところのforeach $each ( %hash ){} みたいなもののようです。
しかし、入力して手元の環境でjavacしてみてもコンパイルエラーになります。
J2SE 5.0からの記述なのかなぁ(手元はJ2SE 1.4)。
言語仕様 (スコア:1)
お察しのとおり、J2SE 5.0からの拡張文法のようです。マクロの無い Java 言語で、今まで冗長な記述が必要だった箇所が簡単に書けるようになったのは、素直に便利だと思います。
これは JCP で提案された改訂のようですが、もし Java が初めからコミュニティベースで開発されていたら、このような文法が初めから入っていたのかどうかは少々気になるところではあります。言語設計の美しさとは別の視点で評価されるところでしょうから…。
まぁ、自分の会社のプロジェクトではまだ J2SE 5.0 を使用できないので、実際に仕事で恩恵を受けられるのはずっと先になりそうです。それに、一般用途向け PC に J2SE 5.0 が広まるのはもっと先のことでしょうから、まだ Java 開発者にお披露目した段階、といえるでしょうね (もしかしたら生成される .class に下位互換性があるのか?)。
Re:言語仕様 (スコア:1)
コンパイルされれば同じという可能性は充分ありそうですね。
スクリプト言語にある(やや曖昧ながら)簡潔な表現をJavaにどこまで持ち込めるのかな。
Perlの「例のアレ」$_なんかはどうみても絶望的ですが、
sort { $a <=> $b }の宇宙船演算子などは面白そうですね。
人生は七転び八起き、一日は早寝早起き