前回<
登場人物
- NRT
猪突猛進なプログラマー
考える前に体力勝負でプログラミングするタイプ。
たまに鋭い洞察力を見せるため、
周囲からは落ち着いてさえいれば…と言われている。
- SSK
冷静沈着なプログラマー
20:80の法則に習い、実は仕事の一部分を学習に当てている。
他の人はそれに気がついていない。
Java7についても以前からチェックはしていた。
- SKR
紅一点なプログラマー
暗算は早いけど、プログラミングはそこそこ。
※登場人物は忍者ではありません。架空のプログラマーです。
新機能:The try-with-resources StatementとCatching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
新機能: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「それは勘弁して欲しいってばよ~!?」
終われ
前回<