Я наткнулся на этот код Java:
static {
String aux = "value";
try {
// some code here
} catch (Exception e) { }
String UUID_prefix = aux + ":";
}
Я новичок в Java, объясните, что здесь происходит.
Я наткнулся на этот код Java:
static {
String aux = "value";
try {
// some code here
} catch (Exception e) { }
String UUID_prefix = aux + ":";
}
Я новичок в Java, объясните, что здесь происходит.
Это статический блок инициализации. Подумайте об этом как о статической версии конструктора. Конструкторы запускаются при создании экземпляра класса; статические блоки инициализации запускаются при загрузке класса.
Вы можете использовать их для чего-то вроде этого (явно сфабрикованного кода):
private static int myInt;
static {
MyResource myResource = new MyResource();
myInt = myResource.getIntegerValue();
myResource.close();
}
Смотрите раздел "Статические инициализационные блоки" Учебник Oracle по инициализации полей.
Это блок кода, который будет вызываться, когда ваш класс загружается classloader
Это статический блок инициализатора. Вы, должно быть, нашли его в классе за пределами любого метода. Статический блок инициализации выполняется только один раз для каждого класса во время загрузки класса.
Это называется статическим инициализационным блоком и будет выполняться один раз, когда этот класс будет загружен.
Суфйан,
Статические инициализаторы не наследуются и выполняются только один раз, когда класс загружается и инициализируется JRE. Это означает, что этот статический блок будет инициализирован только один раз независимо от того, сколько объектов вы создали из этого класса.
Я не большой поклонник этого, и я уверен, что для него есть лучшие альтернативы в зависимости от ситуации.
Спасибо, Краснота
Этот синтаксис устарел от Java 7. Теперь эквивалент:
public static void main(String[] args) {
/*
stuff
*/
}