2014年8月25日月曜日

最終回 Java7はここが違う!


前回

登場人物
  • NRT
    猪突猛進なプログラマー
    考える前に体力勝負でプログラミングするタイプ。
    たまに鋭い洞察力を見せるため、
    周囲からは落ち着いてさえいれば…と言われている。
  • SSK
    冷静沈着なプログラマー
    20:80の法則に習い、実は仕事の一部分を学習に当てている。
    他の人はそれに気がついていない。
    Java7についても以前からチェックはしていた。
  • SKR
    紅一点なプログラマー
    暗算は早いけど、プログラミングはそこそこ。
※登場人物は忍者ではありません。架空のプログラマーです。

新機能:The try-with-resources StatementとCatching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking


~~~ 社内 - 談話室 ~~~


SSK「もうJava8が出ているのだが…」


SKR「でも後ふたつで終わるんだし、せっかくだから完結させたら?」


NRT「へへっ!腕が鳴るってばよ!」


SSK「その情熱はJava8に向けてくれ…
       そうだ、先に行っておくと日本語ドキュメントはもう揃っているからな。
       これからの話は、もう英語が読めなくても独学で学べる。」


SKR「さすがに年単位で連載が空けば、そうもなるかしらね。」


SSK「メタな話は置いておいて、
       まずはtry-catch句の拡張から話すか。」


NRT「うげっ!ようやく使い方が分かってきたのにもう変わるのか!?」


SSK「別に今までの書き方でも構わないが、
       拡張構文を使うとずっと楽になるぞ?
       こんな感じだな。」


try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    // ファイルの内容を使った処理
} catch(FileNotFoundException e) {
    // ファイルが無かったときの処理
}


SSK「どこが楽になったか分かるか?」


SKR「う~ん、ファイルを読み込む処理が移動したのは分かるわ。」


NRT「あーー!分かったってばよ!finallyが無いんだってばよ!!」


SSK「…ほう、使い方が分かったというのはまんざらでも無いらしいな。
       そうこの書き方では、
       finallyで記述しなければならなかったcloseメソッドを書かなくても良くなった。」


SKR「ということは、勝手にclose()してくれるの?」


SSK「そういうことだ。
       Java標準クラスでclose()が必要だったものは、
       ひと通り同じ書き方が使える。
       自作のクラスでも、
       AutoCloseableかCloseableを実装すれば同じ書き方にできるぞ。」


NRT「こりゃあゴキゲンだってばよ♪」


SSK「じゃあもう次に行くぞ。
       またtry-catch句からだ。
       これは例を見せた方が手っ取り早いな。」


try {
    // 何かの処理
} catch (ExceptionA|ExceptionB|ExceptionC e) {
    // 例外処理
}


NRT「こ、これは…!?」


SKR「これはいいわね!何度こういう書き方をしたいと思ったことか♪」


SSK「例外クラスでメソッドを追加することなんてほとんど無いからな。
       これでようやく同じ例外処理を並べる苦痛から解放されたわけだ。」


NRT「これでもっともっと楽にプログラミングできるってばよ!!」


SSK「そうか、ならこのままJava8のラムダ式にいってみるか?」


NRT「それは勘弁して欲しいってばよ~!?」


終われ


前回

0 件のコメント:

コメントを投稿