Superdry Memorandom :-p

旧「superdry memorandum :-D」です

Effective Java 項目1 コンストラクタの代わりにstaticファクトリーメソッド使おうぜ

とりあえず知ってることもあるけど復習の意味で一通りさらいます。モチベーション維持のためblogにメモ。

public static Boolean valueOf(boolean b){
    return b ? Boolean.TRUE : Boolean.FALSE;
}

長所

  1. 名前があるのでコンストラクタと比べてわかりやすい
  2. メソッドを呼び出すごとに新しいインスタンスを生成しなくてよい
  3. 任意のサブタイプの型を返すことができる
  4. パラメータ化された型タイプの記述が少なくてすむ(型推定してくれる)

短所

  1. publicまたはprotected以外のコストラクタを持つクラスの場合サブクラス作れない →コンポジションで問題なし
  2. 普通のstaticメソッドと区別がつきにくい →staticファクトリーメソッドでよく使われる名前を使おうぜ(valueOf,of,newInstance,getInstance,newType,getTypeなど)