Bloco static desagarrado

6 respostas
J

Olá pessoal…Segue um código:

public class Teste
 {
	static
	{     		
		System.out.println("Começa...");
 	}
 	
 	public Teste()
 	{
 		System.out.println("Objeto construído");
 	}

	public static void main(String args[])
	{
      		//new Teste();
	}
 }

Nunca havia visto um bloc static assim…Queria saber pra que isso é utilizado, em geral…Além disso, queria saber se existe algo semelhante para os outros modificadores…

6 Respostas

davidtiagoconceicao

Este é um bloco de inicialização estática. Será executado quando sua classe for referenciada pela primeira vez.
Você pode identificar isso fazendo um debug do código…

T

http://www.guj.com.br/posts/list/43315.java#228968

Os únicos blocos “desgarrados” são o “static” (que você viu) e um que nem nome tem, e que é chamado por todos os construtores.

kinow

Algo static se refere à inicialização da classe e não do Objeto.

Desta forma, quando a vm inicializar a classe (antes de criar objetos), ele executará o conteúdo static dela. Incluindo este bloco de código, que as vezes é chamado de construtor static.

Já vi situações em que este construtor era utilizado quando uma configuração ou recurso do sistema era indispensável para o sistema. Desta forma, antes dos objetos serem criados era verificada a existência e disponibilidade destes recursos.

[]sssss

Focao

kinow:

Já vi situações em que este construtor era utilizado quando uma configuração ou recurso do sistema era indispensável para o sistema. Desta forma, antes dos objetos serem criados era verificada a existência e disponibilidade destes recursos.
[]sssss

umas delas é para o Log4J

static Logger logger = Logger.getLogger(suaclasse.class);
rmendes08

Que coincidência! Hoje eu precisei desse bloco para inicializar uma static HashMap.

class MinhaClasse{
    private static final Map aaa;
   
    static{
        aaa = new HashMap();
        aaa.put( "Chave1" , "valor1" );
        aaa.put( "Chave2" ,  "valor2" );
        //etc...
    }
}
JMan

Focão, de uma olhada no link postado pelo thingol, é completamente diferente do que vc está citando, pois aí vc só esta inicializando uma variável estática com modificador de acesso default, não é um bloco de código estático que é o ítem à que o tópico se refere.

[]'s

Criado 18 de novembro de 2008
Ultima resposta 18 de nov. de 2008
Respostas 6
Participantes 7