タイトル:
Java Generics And Collections
著者: Maurice Naftalin & Philip Wadler
Java5から導入されたGenericsを学ぶことは正直難しいです。
単純にGenerics全開で設計された新しいCollection Frameworkを
使うだけならまだしも、 Genericsをうまく活用したクラスを
設計することは自分には相当難しいと感じられました。
JavaのGenericsが難しい理由のひとつは下位互換性を重視した結果、
おそらくGenericsを学ぶ人全員がハマるであろうとんでもない落し穴を
幾つか作りこんでしまったことにあると思います。
この落し穴のせいでちょっと変なコードを書くとすぐコンパイラは
謎の警告を吐きます。私がGenericsを学ぶ際の労力のほとんどはコンパイラが
吐く警告との戦いに費されました。
本書の前半では、Genericsの利点と欠点を認めた上で、
Genericsの仕組みが1から丁寧に解説されています。
Genericsの難しさは主にパラメータ型が実行時に保持されないという仕様に
起因するものですが、 Genricsを作る上でどんな難しい設計上の
トレードオフがあってこんな仕様を 採用する必要があったのかについても
解説されているため、 Genericsの欠点をやさしい目で見られるようになります。
その上で、落し穴を回避して、効果的にGenerics
を使うコツについて 解説されています。この本を最初から読んでいれば、
コンパイラとの戦いはもっと楽になったのかもしれません。
後半では、Genericsによって生まれ変わったCollection Frameworkについて
網羅的に解説されています。Java5からCollection Framework
には新しい実装が多数追加されましたが、
それらの特徴と使いどころについてかなり詳しく解説されています。
GenericsもCollectionも派手さはないトピックですが、
Javaの基本をなす技術要素です。この基本をしっかり勉強したい方には
お薦めの良書です。英語もそんなに難しくはないので、初めて洋書にチャレンジ
したい方にもちょうど良いのではないでしょうか。