1. ホーム
  2. java

[解決済み] Javaです。静的初期化ブロックはいつ役に立つのか?

2022-05-14 07:59:29

質問

の中での初期化との違いは何ですか? static ブロックの中で初期化されます。

public class staticTest {

    static String s;
    static int n;
    static double d;

    static {
        s = "I'm static";
        n = 500;
        d = 4000.0001;
    }
    ...

そして個別の静的初期化。

public class staticTest {

    static String s = "I'm static";
    static int n    = 500;
    static double d = 4000.0001;

    ....

どのように解決するのですか?

静的初期化ブロックは、条件文の使用など、より複雑な初期化を可能にします。

static double a;
static {
    if (SomeCondition) {
      a = 0;
    } else {
      a = 1;
    }
}

あるいはコンストラクション以上のことが必要な場合:ビルダーを使ってインスタンスを作成する場合、例外処理や静的フィールドの作成以外の作業が必要な場合。

静的初期化ブロックはインラインの静的初期化子の後にも実行されるので、以下のように有効です。

static double a;
static double b = 1;

static {
    a = b * 4; // Evaluates to 4
}