Статическая инициализация карты по сравнению с инициализацией как часть объявления

Есть ли преимущество инициализации карты в статическом блоке по сравнению с ее инициализацией как части объявления?

Инициализировать как часть объявления:

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));
}

В этом примере я не вижу никакой разницы.

CryptoFool 19.03.2022 19:32

Или как насчет Map<String, Integer> map = Map.of("1", 1, "2", 2);?

khelwood 19.03.2022 19:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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.

В вашем примере оба случая одинаковы.

Другие вопросы по теме