引っ越しで一時中断していたが、一人読書会シリーズ再開。
復習と言うことでまた最初から読み始めてます。
ところどころ初版と異なる部分があったので、今回は気づいた点のみを挙げていこうかなぁと思う。
2章
・項目1 static factory method
ジェネリックス導入によるメリット追加。
Map
のように型パラメータを2回指定するのはメンドイよねと言う話。
static factory method命名例を大幅追記
valueOf()じゃなく最近じゃof()にする傾向らしい。短くてcool
・項目2 テレスコーピング及びJavaBeansパターンの代替案
第2版で追加された項目だ。可読性及び整合性を保つ
Builderパターン+staticなメンバークラス+メソッドチェーンという組み合わせの提示。
なるほど、いいセンスだ。
・項目3 singleton
enumを使った新しい実装例。
static finalなフィールドに自身のインスタンスを持たせ、コンストラクタをprivateにする従来の方法より圧倒的に楽そうだ。
・項目5 不要なオブジェクト生成
autoboxingの罠に気を付けましょうという話が追記。
・項目6 メモリリーク
メモリリークの原因例の追記。リスナーやコールバックの登録実装時は注意する。
まぁこれも独自のメモリ管理に入りますよって事ね。
3章
・項目8 hashCode()実装のガイドライン
step2.bの乗数が変更されてる。
奇数の素数として37ではなく、第2版では31が挙げられている。
31*i == (i<<5)-i
最近のJVM実装では高速なシフト演算に置き換えられる物は勝手に最適化してくれるらしい。技術の進歩は素晴らしいですね。
・項目11 clone()実装のガイドライン
共変戻り値型導入により、clone()はObjectではなく、cloneを実装しているクラスに変更できるようになった。キャストしなくて良いのでちょっと便利。
共変戻り値なんて言葉は初めて見たけど、要はオーバーライドしたメソッドは、オーバーライドされるメソッドの戻り値のサブクラスを戻すことが可能になったってこと(1.4までは完全一致がオーバライド時の条件)。コレ、あまり意識してなかったなぁ。
・項目12 comparableの実装
以前書いたComparatorの実装と似ているけど、インタフェース実装時に比較する型を指定できるようになったのでちょっと楽に。
4章
・項目15 可変性を最小限に
特に追記はないみたいだけど、前回のよく分からなかった部分が理解できた気がする。
---
とりあえず初版の復習と言うことでここまではすんなり読めた。