Função após construtor

Como posso executar uma ação depois da chamada de um construtor?

public class Classe{

    public Classe(){

    }

    private void acao(){

    }

}

Quando eu chamar o construtor da classe depois do construtor seja automaticamente executado outra função

Beleza ?

Se você colocar a chamada da ação no construtor, não resolve ?

[code]public class Classe{

    public Classe(){  
    //...
    acao();
    }  
  
    private void acao(){  
  
    }  

} [/code]:?:

Se fizer assim:

[code]public class Classe{

    public Classe(){  
    
    }  
  
     //Ação:
    {  
      ... 
    }  

} [/code]
Acho que ele executa antes.

O que voce que fazer de ação!?
Não entendi muito bem, voce faz o construtor e depois cria outros metodos?!

tentei
nao deu certo =/

O que exatamente vc quer amigo??

Que quando eu chamar o construtor da classe depois do construtor seja automaticamente executado outra função

Existem duas maneiras de fazer isso…

uma delas eh chamando a funçao que vc quer logo depois de criar a instancia da classe:

exemplo:

//Chama o construtor automaticamente
Classe objeto = new Classe();
//chama o metodo que vc ker
objeto.metodo();

ou entrao vc pode chamar a funçao dentro do proprio construtor, como citou nosso amigo la em cima:

public class Classe{
       public Classe(){
             metodo();
      }
      public void metodo(){
      }
}

se nao funcionou é pq vc esta fazendo algo errado…
poste o codigo modificado…

A primeira forma não é valida pois isso não seria automaticamente e a segunda não é depois, é durante

intaum, boa sorte!

Obrigado lucas =)

So por curiosidade man…

Qual é exatamente o enunciado da questao??

Se é que isso é uma questao…

se tem alguma forma de que uma função seja executada automaticamente depois que o objeto acabr de ser construido

particulamente, nunca vi alguem fazendo isso…

ou o porque disso…

o.O

mas enfim…

tirando o jeito que o lucas colocou ae, pode até ter mas dae ja não é algo muito viável ( e útil ) de se fazer…

vc pode colocar um boolean global como false e no contrutor setando ele como true… dae numa outra thread vc ficaria lendo esse boolean e qndo fosse true esse thread iria iniciar o metodo q vc queria

[quote=drigo.angelo] [code]public class Classe{

    public Classe(){  
    //...
    acao();
    }  
  
    private void acao(){  
  
    }  

} [/code]
[/quote]
se isso não funcionou, vc está fazendo algo muito errado, posta seus codigos ai.

Fala brow,

Eu acho que a chamada ao metodo no final do construtor resolve…
Se nao me engano, quando voce instancia uma classe, o construtor dela chama primeiro os construtores de suas
superclasses, depois disso executa o seu proprio codigo do construtor…

Entao, se voce fizer…

public class Teste1 {
   public Teste1 (){
     // automaticamente chama os construtores das super classes...

    // Agora, executa o proprio construtor
    // Imprime algo...;
    System.out.println("bla bla bla");
    // Instancia algo...
    String str = new String("bla!");

    // aqui, ja acabou o "papel" do construtor, e chama o metodo...
    metodo1();    
   }

   public void metodo1(){
      System.out.println("Oooopa...");
   }
}

… o metodo metodo1 sera chamado automaticamente e apos o termino do trabalho do construtor…

Abraco!

Vou mostrar o motivo:

public class Malha extends Group <SDEE,SDEE,Regiao>{

	public Malha(SDEE root, String idExterno) {
		super(root, idExterno);
		super.parent.malha.addGroup(this);
	}
	
}

O método addGroup acessa os atributos para cadastrar o objeto. Como o objeto nao acabou de ser construido a excessão null pointer exception é levantada

Claro que se tiver outra forma de contornar esse problema serviria tambem

Agooora que fui entender seu problema…

Já testou assim:

[code]public class Malha extends Group <SDEE,SDEE,Regiao>{

 public Malha(SDEE root, String idExterno) {  
     super(root, idExterno);  
     doIt();
 }  
 
 private void doIt(){
      super.parent.malha.addGroup(this);  
 }

} [/code]

Fiz uns testes aqui assim, não sei se retrata seu problema 100% mas funcionou aqui, olha:
Pai.java:

[code]public class Pai{
private Pai[] listaDePais;
private int count;
private final int MAX_PAIS = 5;

private String nome;
private int qtdFilhos;

public Pai(String nome, int qtdFilhos){
	listaDePais = new Pai[MAX_PAIS];
	count = 0;
	this.nome = nome;
	this.qtdFilhos = qtdFilhos;
}

protected boolean addPai(Pai p){
	if(count <= MAX_PAIS){
		listaDePais[count++] = p;
		System.out.println("Pai adicionado com sucesso");
		System.out.println();
		return true;
	}
	System.out.println("Pai nao foi adicionado com sucesso");
	return false;
}

public void imprimeLista(){
	for(Pai p : listaDePais){
		System.out.println(p);
	}
}

public String getNome(){
	return nome;
}

public int getQtdFilhos(){
	return qtdFilhos;
}

public String toString(){
	return "{Nome - "+ getNome() + ", Quant Filhos - " + getQtdFilhos()+"}";
}

}[/code]

classe filha- PaiSub.java:

[code]public class PaiSub extends Pai{
private String mulher;

public PaiSub(String nome, int qtdFilhos, String nomeMulher){
	super(nome, qtdFilhos);
	System.out.println("Finalizou construtor da classe Pai... Iniciando operacoes do construtor de PaiSub...");
	System.out.println();
	mulher = nomeMulher;
	
	System.out.println("Finalizou inicializacao de PaiSub. Chamando metodo que ira adiciona-lo...");
	System.out.println();
	runAfterInicialization();
}

private void runAfterInicialization(){
	System.out.println("Chamando metodo da classe Pai...");
	System.out.println();
	addPai(this);
}

public static void main(String... args){
	PaiSub ps = new PaiSub("Mauro da Silva", 3, "Maria Joana Rosa");
	System.out.println();
	ps.imprimeLista();
	System.out.println(ps);
	System.out.println("Fim da execucao!! ");
}

public String getMulher(){
	return mulher;
}

public String toString(){
	return "{Nome - "+ getNome() + ", Quant Filhos - " + getQtdFilhos()+ ", Nome da Mulher - "+getMulher()+"}";
}

}[/code]

Saída:

[code]Finalizou construtor da classe Pai… Iniciando operacoes do construtor de PaiSub…

Finalizou inicializacao de PaiSub. Chamando metodo que ira adiciona-lo…

Chamando metodo da classe Pai…

Pai adicionado com sucesso

{Nome - Mauro da Silva, Quant Filhos - 3, Nome da Mulher - Maria Joana Rosa}
null
null
null
null
{Nome - Mauro da Silva, Quant Filhos - 3, Nome da Mulher - Maria Joana Rosa}
Fim da execucao!![/code]