Effective Java Reloaded

先日、待望の「Effective Java」の第2版が発売されたので購入した。

Effective Java 第2版 (The Java Series)

Effective Java 第2版 (The Java Series)

著者のジョシュア・ブロックは当時SunでJavaライブラリの設計にかかわり、Googleに移ったあともJava界に強い影響力を及ぼしている人だ。
第1版は、Javaでエレガントなコードを書こうと思ったら絶対に読んでおくべき本だった。


第1版(邦訳)は2001年に発売されたので、第2版の登場までに7年経ったことになる。
その間にJava5、Java6が登場し、Genericsenumが言語仕様に追加されたため、第1版で提示された定石は必ずしもベストな書き方とは言えなくなった。
第2版はこれらの追加仕様をふまえ、加筆修正を行ったもの。


2006年のJavaのイベント(JavaOne2006)で「改訂版を執筆中」との告知があったと聞いてから、ずっと待ってたんだよ〜
(当時は第2版ではなく「Effective Java Reloaded」と言われていた)


特にJava5で追加されたenumについては、言語仕様を見ただけではいまいちピンと来ず、第1版で紹介された「タイプセーフenumパターン」を使い続けていたのだが、最新のJavaではどう記述すべきか、というのはずっと気になっていた。
Java5で追加されたenumはこの「タイプセーフenum」を言語仕様として取り込み、さらに「switch文で使えない」「ビット和演算などができない」などの、当時示された欠点も解消したものだという。
また、enumとあわせて追加されたEnumSetなどのクラスは、ジョシュア・ブロック本人が書いたらしい。設計・実装者本人による使用法の解説というわけだ。いやー楽しみ。


これまで参加したプロジェクトでも、Genericsや拡張for文は使われていても、enumが使われているところは少なかったのだよねえ…。巷でも、どのように使うべきかが知られていない機能ではなかろうか。


まだ読み始めたばかりだが、enumを使った完全なシングルトンの実装とか、最新のJavaで可能になった応用もいろいろ紹介されている。


第1版は当時の僕には相当難解で、ページを行きつ戻りつしているうちに読むのに半年くらいかかった記憶がある。現在でも内容のすべてを理解しているかちょっと怪しい。
復習も兼ねて、前回と内容が重複している部分も再度読みなおしてみよう。