«Альтернатива статическим блокам» - это инициализация одного статического поля.
Пример:
class A {
static Map<String, Integer> romans;
static {
romans = new HashMap<>();
romans.put("I", 1);
romans.put("V", 5);
romans.put("X", 10);
}
}
Альтернатива:
class A {
static Map<String, Integer> romans = initRomans();
private static Map<String, Integer> initRomans() {
Map<String, Integer> r = new HashMap<>();
r.put("I", 1);
r.put("V", 5);
r.put("X", 10);
return r;
}
}
Как говорится в статье, с помощью этого кода вы можете сбросить статическое поле.
public static void resetRomans() {
romans = initRomans();
}
Если ваш код делает что-то другое, то «альтернатива» не применима, и вы пишете код в блоке статического инициализатора.
class A {
static {
Manager.register(A.class);
}
}