コンストラクタとstaticメソッド
まずはEffective Javaでおなじみ、「http://d.hatena.ne.jp/makiyamakoji/20090326/p1」で紹介されているstaticファクトリメソッドという方法。
public class Hoge { private Hoge() { ... } // static ファクトリーメソッド public static Hoge newInstance() { return new Hoge(); } }
つぎに、「コンストラクタで final なフィールドをあきらめない方法 - ぐるぐる~」で紹介されているコンストラクタからstaticメソッドを呼ぶ方法
public final class Hoge { final int hoge; public Hoge(int piyo) { hoge = prepareHoge(piyo); } private static int prepareHoge(int piyo) { // 何かとても複雑な処理 // ... return result; } }
publicなstaticメソッドからprivateなコンストラクタを呼ぶというのと、
publicなコンストラクタからprivateなstaticメソッドを呼ぶというのが
対になっていておもしろいと思った。