Подтвердить что ты не робот

Что означает Static {} в синтаксисе Java?

Я наткнулся на этот код Java:

static {
    String aux = "value";
    try {
        // some code here
    } catch (Exception e) { }
    String UUID_prefix = aux + ":";
}

Я новичок в Java, объясните, что здесь происходит.

4b9b3361

Ответ 1

Это статический блок инициализации. Подумайте об этом как о статической версии конструктора. Конструкторы запускаются при создании экземпляра класса; статические блоки инициализации запускаются при загрузке класса.

Вы можете использовать их для чего-то вроде этого (явно сфабрикованного кода):

private static int myInt;

static {
    MyResource myResource = new MyResource();
    myInt = myResource.getIntegerValue();
    myResource.close();
}

Смотрите раздел "Статические инициализационные блоки" Учебник Oracle по инициализации полей.

Ответ 2

Это блок кода, который будет вызываться, когда ваш класс загружается classloader

Ответ 3

Это статический блок инициализатора. Вы, должно быть, нашли его в классе за пределами любого метода. Статический блок инициализации выполняется только один раз для каждого класса во время загрузки класса.

Ответ 5

Это называется статическим инициализационным блоком и будет выполняться один раз, когда этот класс будет загружен.

Ответ 6

Суфйан,

Статические инициализаторы не наследуются и выполняются только один раз, когда класс загружается и инициализируется JRE. Это означает, что этот статический блок будет инициализирован только один раз независимо от того, сколько объектов вы создали из этого класса.

Я не большой поклонник этого, и я уверен, что для него есть лучшие альтернативы в зависимости от ситуации.

Спасибо, Краснота

Ответ 7

Этот синтаксис устарел от Java 7. Теперь эквивалент:

public static void main(String[] args) {
    /*
      stuff
    */
}