初期化ブロック

クラス生成時に行う処理は、コンストラクタに記述するのが一般的です。しかし、時によってはコンストラクタが動作する前に何か処理を行いたい場合があります。

そのような場合には初期化ブロックとよばれる文法を使います。クラス定義のすぐしたに、{ } で囲って中に処理を記述します。

ブロック内の処理がコントラクタより先に動作します。

{  //初期化を行いたい処理  }

 

static初期化ブロック

初期化ブロックが動作するのはインスタンス生成前です。クラスのstaticフィールドなどをもし初期化したい処理があるとすると、インスタンスの生成は行われませんので

初期化ブロックでは対応できません。そのような時は、static初期化ブロックを使います。 static {  } と囲い処理を記述すます。

 

static {   //初期化したい処理   }

 

サンプルプログラムは以下のようになります。実行される順番は、まずこのクラスがクラスローダによりロードされた時にstatic初期化ブロックが動作します。

その後、mainメソッドがJVMより起動されて、コンストラクタを呼ぼうとしていますが、コンストラクタが呼ばれる直前に

初期化ブロックの処理が先に動き、そのコンストラクタが動作します。

public class Initalize1 {
 static {
 System.out.println("static初期化ブロック");
 }
 {
 System.out.println("初期化ブロック");
 }

public Initalize1() {
 System.out.println("コンストラクタ");
 }

public static void main(String[] args) {
 new Initalize1();
 }
}
Javaを学習するなら

 

EFFECTIVE JAVA 第2版 (The Java Series)

新品価格
¥3,888から
(2014/9/1 22:19時点)