Posso chamar outros métodos no meu construtor ?[RESOLVIDO]

Aê galera… to fazendo umas janelas aqui, mas me deparei com o seguinte problema, se não preencher nenhum campo do cadastro e mesmo assim clicar no botão cadastro, ele retorna um erro e trava, então queria criar um método para verificar todos os campos antes da gravação dos dados, mas não to conseguindo porque os dados são gravados por um ActionListener e ela fica no construtor, daí eu chamo o método que eu criei, mas sempre da erro.

Aí eu me fiz a pergunta que nunca havia parado pra pensar… É possível estar chamando outros métodos da classe dentro do construtor ?

É sim. Pode chamar outros métodos normalmente.

Mas tome o cuidado para que esses métodos sejam ou private, ou final. Senão uma subclasse poderá sobrescreve-lo e alterar o comportamento esperado.

Lembre-se que o objeto é construído a partir da super-classe, então, chamar um método sobrescrito no construtor pode recair no sério problema da subclasse tentar usar um atributo que ainda não foi inicializado!!!

Vini, faço das suas palavra as minhas!!

:wink:

é sim… o que vc não pode fazer eh chamar contrutores dentro de metodos… por exemplo…

void a(){
Class (){
super();
}
}

isso é invalido… construtores chamam construtores…

Nó vlw D+ galera…

Deu certo aki… o pró é que eu tava fzendo o método public, aí tava dando erro que eu não sabia identificar qual… mas foi só trocar por private aí rodou belezinha…

  • 1 vez… Mtu Obrigado !

Mas da próxima vez, tente não utilizar essa solução, da pra fazer o que quiser em Java sem precisar utilizar o construtor pra carregar outros métodos… não fica muito bonito…

Pq não fica bonito? Respeitando a regra de que os métodos devem ser private ou final, não vejo porque não utilizar. Dividir em outros métodos geralmente deixa o código mais organizado.

E dividir demais complica tudo. Os desenvolvedores Java querem dividir tudo o máximo possível, querendo utilizar ao máximo o conceito de OO, mas se pararmos pra pensar, só faz sentido se isolado o que pode ser utilizado por outras classe, se for uma coisa única, deixe onde está… penso sempre na reutilização do código e não em firular demais a aplicação.

Não é questão de firular. Como você sabe se futuramente uma outra classe ou método vai precisar usar só um pedaço desse seu método que vc juntou tudo?

Rapaz… a idéia não é mesmo firular e sim deixar o código mais claro e limpo. Especialmente se você tem uma inicialização complexa. É muito mais fácil ler algo como:

x = integral(y);

Do que se eu colocasse o cálculo para calcular a integral diretamente no construtor…

Já leu Refatoração, do Martin Fowler? Ele explica exatamente esse conceito, o porque usar, como usar e para que usar. E mostra claramente a importância de usar métodos curtos, que podem te ajudar até a aumentar a performance de sua aplicação!

Dê uma conferida!! :wink:

Voce me deu um exemplo de um método que poderá ser utilizado em outros lugares, mas beleza, entendi o que voce quis dizer!