Conteúdo - bloco init!

3 respostas
MrDataFlex

alguém poderia me explicar o que é este conteúdo init, que nunca tinha visto até olhar o livro da khaty ? pelo q vi , ele executa primeiro q o constructor! :stuck_out_tongue:

3 Respostas

anderson.bonavides

Os blocos Staticos rodam primeiro que o construtor eles rodam quando a classe é carregada pela primeira vez. E os blocos inits rodam na sequencia caso haja mais de um depois que o contrutor é carregado.

M

Olá!

Como o Anderson falou, só para exemplificar:

Os “static init blocks” executam uma vez quando a classe é carregada;

Os “instance init blocks” executam toda vez que uma instância da classe é criada. E depois da chamada super() do construtor.

public class InitBlocks {
    
    static {  
        System.out.println("Executa qdo a classe é carregada pelo ClassLoader!"); 
    }
    
    InitBlocks() {
        //super();
       System.out.println("Continuando após os instance init blocks...");
    }
    
    { System.out.println("É executado quando uma instância da classe é criada!); }

    static{
        System.out.println("Aqui também é válido!");         
    }

    public static void main(String[] s) {
        new InitBlocks();
        new InitBlocks();
    }
}


Saída: 
   Executa qdo a classe é carregada pelo ClassLoader!
   Aqui também é válido!
   É executado quando uma instância da classe é criada!
   Continuando após os instance init blocks...
   É executado quando uma instância da classe é criada!
   Continuando após os instance init blocks...

Acho que é isso.

LPJava

os blocos das instancias… se nao to equivocado eles rodam sempre antes(ou é depois) dos contrutores… e quando se dar um new. Vamos fazer um teste:

class TEste{
{System.out.println("guj");}
public static void main(String args[]){
TEste t  = new TEste();
TEste t2  = new TEste();

Veja ai quem executa primeiro… :smiley:

A kathy trata desse assunto sim… ou é no cap 2 ou é no 3… nao lembro perfeitamente… porem ela nao mostra com muitos exemplos mais aborda todas as regras…

Criado 28 de fevereiro de 2008
Ultima resposta 3 de mar. de 2008
Respostas 3
Participantes 4