Posso chamar outros métodos no meu construtor ?[RESOLVIDO]
10 respostas
thiagotbo
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 ?
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!!!
P
Pitagoras
Vini, faço das suas palavra as minhas!!
LPJava
é sim… o que vc não pode fazer eh chamar contrutores dentro de metodos… por exemplo…
voida(){Class(){super();}}
isso é invalido… construtores chamam construtores…
thiagotbo
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 !
L
leandroqbs
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…
ViniGodoy
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.
L
leandroqbs
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.
Adriano_Almeida
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?
ViniGodoy
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!!
L
leandroqbs
Voce me deu um exemplo de um método que poderá ser utilizado em outros lugares, mas beleza, entendi o que voce quis dizer!