' P '

whatever I will forget

Java Static Initialization Block

活用法はわかってませんが、こんなこともできるのかーってメモ

ポイント

  • コンストラクタよりも先に呼ばれる。
  • 変数の保持も可能。
public class Main {
    public static void main(String[] args) {
        SIB sib = new SIB();
        System.out.println(sib.something);
    }
}
public class SIB {
    public static final String something;

    static {
        System.out.println("Static Initialization Block 1");
        something = "something";
    }

    public SIB() {
        System.out.println("Constructor called");
    }

    static {
        System.out.println("Static Initialization Block 2");
    }
}
Static Initialization Block 1
Static Initialization Block 2
Constructor called
something