Sobre os blocos de inicialização

3 respostas
D

Ola galera, hoje um amigo meu veio com uma duvida, ele me perguntou para que servia os blocos de inicialização, eu na verdade nem sabia que era esse o nome daqueles blocos que usamos nas classes, pelo pouco que sei, sei que um bloco static é executado assim que o classe é carregada e um não static é executado antes do construtor não é mesmo, mas para que realmente server esses blocos?

public class Blocos 
{
	static
	{
		System.out.println("O bloco static");
	}
	
	{
		System.out.println("Bloco não static");
	}

    public Blocos() 
    {
    	System.out.println("Contrutor");
    }
    
    public static void main(String args[])
    {
    	System.out.println("Método main");
    	Blocos bloco = new Blocos();
    }
    
    
}

A saida do programa é:

O bloco static
Método main
Bloco não static
Contrutor

3 Respostas

sergiotaborda

São usado em casos muito particulares quando queremos que recursos estejam disponiveis antes que a classe faça o seu trabalho. São usado, por exemplo, para carregar biblioteca nativas. No drivers JDBC são usados para registrar a classe no DriverManager.

ViniGodoy
  1. Quiser inicializar variáveis estáticas que lancem exceções verificadas. Eles acabam sendo uma espécie de “construtor estático”
  2. Blocos não estáticos… bem, quase nunca. Podem ser usados como um pseudo-construtor de uma inner class anônima;
  3. Em concursos de ofuscação de código.
T

Blocos não-estáticos são usados quando se quer acrescentar um comportamento a ser executado por todos os construtores dessa classe.
Eles são um pouco obscuros, na verdade, e só se recomenda usá-los se forem devidamente comentados.

Criado 17 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 3
Participantes 4