Como usar estáticos Initializers em Java

Em Java, você pode usar blocos de inicialização para inicializar variáveis ​​de instância. blocos de inicialização não são executados até que uma instância de uma classe é criada, então você não pode contar com eles para inicializar campos estáticos. Afinal, você pode acessar um campo estático antes de criar uma instância de uma classe.

Java fornece um recurso chamado de inicializador estático que é projetado especificamente para permitir que você inicializar campos estáticos. A forma geral de um inicializador estático parece com isso:

estático{declarações ...}

Como você pode ver, um inicializador estático é semelhante a um bloco inicializador, mas começa com a palavra estático. Tal como acontece com um bloco inicializador, você codificar inicializadores estáticos no corpo da classe, mas fora de qualquer outro bloco, como o corpo de um método ou construtor.

A primeira vez que você acessar um membro estático, como um campo estático ou um método estático, todos os inicializadores estáticos na classe são executados - desde que você ainda não tiver criado uma instância da classe. Isso porque os inicializadores estáticos também são executados a primeira vez que você criar uma instância. Nesse caso, os inicializadores estáticos são executados antes o construtor é executado.

Se uma classe tem mais de um inicializador estático, os inicializadores são executados na ordem em que aparecem no programa.

Aqui está um exemplo de uma classe que contém um inicializador estático:

classe StaticInit {int public static x-static {x = 32 -} // outros membros da classe, tais como construtores e métodos // aqui ...}

Este exemplo é bastante trivial. Na verdade, você pode conseguir o mesmo efeito apenas atribuindo o valor 32 à variável quando ela é declarada. Se, no entanto, você teve que realizar um cálculo complicado para determinar o valor de x - ou se o seu valor vem de uma base de dados - um inicializador estático poderia ser muito útil.

menu