パスワードを忘れた? アカウント作成
432207 journal

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)。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by hideto-o (16740) on 2005年08月18日 12時30分 (#783318)

    お察しのとおり、J2SE 5.0からの拡張文法のようです。マクロの無い Java 言語で、今まで冗長な記述が必要だった箇所が簡単に書けるようになったのは、素直に便利だと思います。

    これは JCP で提案された改訂のようですが、もし Java が初めからコミュニティベースで開発されていたら、このような文法が初めから入っていたのかどうかは少々気になるところではあります。言語設計の美しさとは別の視点で評価されるところでしょうから…。

    まぁ、自分の会社のプロジェクトではまだ J2SE 5.0 を使用できないので、実際に仕事で恩恵を受けられるのはずっと先になりそうです。それに、一般用途向け PC に J2SE 5.0 が広まるのはもっと先のことでしょうから、まだ Java 開発者にお披露目した段階、といえるでしょうね (もしかしたら生成される .class に下位互換性があるのか?)。

    • by WindVoice (14680) on 2005年08月18日 21時49分 (#783507) 日記
      下位互換性は…… どうでしょうね、
      コンパイルされれば同じという可能性は充分ありそうですね。

      スクリプト言語にある(やや曖昧ながら)簡潔な表現をJavaにどこまで持ち込めるのかな。
      Perlの「例のアレ」$_なんかはどうみても絶望的ですが、
      sort { $a <=> $b }の宇宙船演算子などは面白そうですね。
      --
      人生は七転び八起き、一日は早寝早起き
      親コメント
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...