クラスのフィールドにて、各メソッドでnewするのではなくフィールドの宣言と同時にnewしたときに、いったいいつフィールドのコンストラクタは呼ばれるのだろうとちょっと思い、コードを書いてみた。
public class ConstructorTiming { AAA a = new AAA(); public ConstructorTiming() { System.out.println("aaa"); } public static void main(String[] args) { System.out.println("開始"); ConstructorTiming hoge = new ConstructorTiming(); System.out.println("終了"); } } class AAA { public AAA() { System.out.println("AAAのコンストラクタ"); } }
実行してみると、
開始
AAAのコンストラクタ
aaa
終了