Есть ли преимущество инициализации карты в статическом блоке по сравнению с ее инициализацией как части объявления?
Инициализировать как часть объявления:
private static final Map<String, Integer> init1 = Map.ofEntries(Map.entry("1" , 1),
Map.entry("2" , 2));
Инициировать статический блок:
private static final Map<String , Integer> init2 ;
static {
init2 = Map.ofEntries(Map.entry("1" , 1),
Map.entry("2" , 2));
}
Или как насчет Map<String, Integer> map = Map.of("1", 1, "2", 2);
?
Статический блок имеет только одно преимущество, если у вас будет сложная логика инициализации, например, обработка ошибок или цикл. См. Инициализация полей
If initialization requires some logic (for example, error handling or a for loop to fill a complex array), simple assignment is inadequate. Instance variables can be initialized in constructors, where error handling or other logic can be used. To provide the same capability for class variables, the Java programming language includes static initialization blocks.
В вашем примере оба случая одинаковы.
В этом примере я не вижу никакой разницы.