Ответ
Статический блок (static {}) предназначен для статической инициализации класса — выполнения кода один раз при первой загрузке класса в JVM.
Ключевые особенности и применение:
- Выполняется до создания любого экземпляра класса или вызова статического метода.
- Используется для сложной инициализации статических полей (когда простого присваивания недостаточно).
- Подходит для загрузки конфигураций, регистрации драйверов БД, заполнения статических коллекций.
Пример:
public class DatabaseConfig {
private static final Properties CONFIG = new Properties();
// Статический блок для однократной загрузки настроек
static {
try (InputStream input = DatabaseConfig.class
.getResourceAsStream("/db.properties")) {
CONFIG.load(input);
System.out.println("Конфигурация БД загружена.");
} catch (IOException e) {
throw new RuntimeException("Ошибка загрузки конфигурации", e);
}
}
public static String getConfig(String key) {
return CONFIG.getProperty(key);
}
}
Важно: порядок выполнения нескольких статических блоков соответствует их порядку в коде.