Что означает Static {} в синтаксисе Java? - PullRequest
24 голосов
/ 10 ноября 2011

Я сталкивался с этим кодом Java:

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

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

Ответы [ 7 ]

25 голосов
/ 10 ноября 2011

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

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

private static int myInt;

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

См. Раздел «Статические блоки инициализации» Руководство Oracle по инициализации полей .

9 голосов
/ 10 ноября 2011

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

6 голосов
/ 10 ноября 2011

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

3 голосов
/ 10 ноября 2011

Sufyan,

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

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

Спасибо, Reds

3 голосов
/ 10 ноября 2011
2 голосов
/ 10 ноября 2011

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

1 голос
/ 06 сентября 2016

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

public static void main(String[] args) {
    /*
      stuff
    */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...