スタティックイニシャライザというのは Java をやってる人なら何度も使ったことがあると思う。 Java を 10 年以上やっていて「インスタンスイニシャライザ」というものがあることを先日知った。 public class Test { int i; { // このブロックがインスタンスイニシャライザ System.out.println("1:" + i); i = Math.max(1, 2); System.out.println("2:" + i); } public Test() { } public Test(int i) { this.i = i; } } このコードをコンパイルして逆コンパイルすると、以下のようなコードになる。 public class Test { int i; public Test() { System.out.println("1:" + this.