【EffectiveJava[15]】

<第 4 章 クラスとインタフェース>
項目15: 可変性を最小限にする

■著書からの要点抜粋
・クラスを不変にするための5つの規則
※不変クラスはインスタンスが変更できないという単なるクラスのこと

  1. オブジェクトの状態を変更するためのいかなるメソッドも提供しない。
  2. クラスが拡張できないことを保証する。
  3. すべてのフィールドをfinalにする。
  4. すべてのフィールドをprivateにする。
  5. 可変コンポーネントに対する独占的アクセスを保証する。

・不変オブジェクトは、本質的にスレッドセーフです。
・不変オブジェクトは、制限なく共有できます。
・不変クラスの唯一の実質的欠点は、
 個々の異なる値に対して別々のオブジェクトを必要とすることです。
・可変にすべきかなり正当な理由がない限り、クラスは不変であるべきです。

■所感
最後の一文が気になる。
だいたい作るのは可変クラスだが、不変クラス持つ買っていきたい。

Effective Java プログラミング言語ガイド

Effective Java プログラミング言語ガイド