javaでデザインパターンを書いて手を動かそう#5をやりました。
- staticの初期化がわかってませんでした。
- import時には、static fieldは初期化しません。
package s; public class Singleton { private static final Singleton s; // staic 初期化子 static { s = new Singleton(); } // コンストラクタ private Singleton(){ System.out.println(" -- generate --"); } // staticのmethod public static Singleton getInstance(){ return s; } }
import s.Singleton; public class Main2 { public static void main(String[] params){ System.out.println("start"); Singleton.getInstance(); } }
- callする
- import時ではなく、static method時に呼び出される。
- もしくは、そのクラスのインスタンスが生成されたとき。
- 詳しくは、参考サイトを参照願います。
toenobu:singleton xoxopanda$ java -Dfile.encoding=UTF-8 Main2 start -- generate --