Static Initializerの使い道

会社からJavaの資格を取るなら今だよ的な話があってちょっとずつ進めているSJC-Pの勉強ですが、知らないことがたくさんあってなかなかおもしろいです。

そんな中で出てきた Static Initializer 。static 初期化とも言いますね。何をするものかというと、Staticメンバのためのコンストラクタといえばいいのでしょうか。クラスのコンストラクタが呼ばれる前に実行されるもので、クラスのstaticメンバを初期化するためにあります。

正直いまいち使い道がわからなんなぁと思っていたところ、@angeleyeschappy さんからstatic 配列の初期化で使用する事があるよと教えてもらいました。(@angeleyeschappy さん、ありがとー)

さて、ここで私が知らなかったことがもう一つわかったのですが、配列ってstaticに宣言できるんですね。まじめに知りませんでした(;゜ロ゜)

で、早速自宅でプログラミング言語 Javaをひっくり返して該当の箇所を見てみましたが、そのものずばり記載がありました。(どうせなら配列の初期化以外の気の利いたサンプルがあれば良いのになぁ)

[sourcecode language="java"]

public class StaticClass {

// staticな配列の生成
public static int[] vector = new int[2];

// static初期化
static{

    // 配列の初期化
    vector[0] = 10;
    vector[1] = 2;
}

}

public class StaticInitSample {

// エントリポイント
public static void main(String[] args){

    // 作成した配列を読み出す
    for (int index :StaticClass.vector){
        System.out.println("StaticClass.vector の値は " + index + " です。");
    }
}

}

[/sourcecode]

とまぁこんな感じでstaticに宣言した配列を初期化することができます。

ちなみに、.NETでもstaticな配列は作成できました…