Atualmente, estou usando o logger no meu projeto da seguinte maneira:
private static final Logger LOGGER;
static{
LOGGER = logger.getLogger();
}
Eu recebi uma revisão de código por usar o bloco estático para inicializar a variável de logger. Disseram-me para inicializar a variável logger na própria declaração de declaração.
private static final Logger LOGGER = Logger.getLogger();
Estou tentando descobrir qual a diferença que fará se eu não inicializá-lo no bloco estático. Eu quero saber se isso é uma prática.
Respostas:
Exceto por alguns casos de canto realmente bizarros envolvendo a sequência de inicializadores, as duas alternativas funcionarão exatamente da mesma maneira.
No entanto, inicializar a instância correta na declaração é mais curto e mais familiar e deve ser preferido apenas por esse motivo.
Os blocos de inicialização estática são uma construção um tanto exótica e devem ser usados apenas quando realmente oferecem valor agregado, como quando você precisa lidar com exceções.
fonte
Map.of
métodos do Java 9 devam ajudar com isso.Map.of
retorna um mapa imutável, portanto, se você realmente precisa de um,HashMap
ainda precisa fazê-lo da maneira antiga. Ou algo parecidonew HashMap(Map.of(...))