Formas de invocação de Metodos Em Java

KumanduS

Power Member
Boa Tarde a Todos,
Estou a fazer um trabalho para uma aula, já esta tudo feito e agora estou a optimizar o projecto.
O meu "run" tem de chamar 7 métodos (que fazem todos mais ou menos a mesma coisa mas que têm de ser obrigatoriamente 7), eu queria evitar repetir o mesmo código:
fundo.filledRectangle(0 , 0 , 600 , 500 , 0 ,0 ,0, 255);
minhaArvore.arvore1(200);
fundo.writeImageToPNG("arvore1.png")
uma vez, que as únicas diferenças entre as próximas linhas será o nome do método (arvore1(2,3...)) e o nome do ficheiro (arvore1.png). Pensei em usar um ciclo através do uso de um array de string com o nome de métodos (contudo o java não aceita), também sei que posso fazer um switch e com um for posso chamar esses mesmo métodos. Mas contudo gostaria de saber se existe outras formas de invocar métodos ou manipula-los.
Obrigado
 
Última edição:
Boas, podes usar a API de reflexão do Java. A ideia é pegares no nome do método, obteres um objecto do tipo Method e invocares. Podes ver uns exemplos aqui, ou procura na web por "Java Reflection", pois devem existir bastantes tutoriais.

No entanto, aconselhava-te a tentares generalizar o tal método que faz praticamente a mesma coisa, antes de partir para a reflexão.
 
Obrigado pela tua ajuda tão rápida, vou verificar o link que me forneces-te!Não posso generalizar uma vez que as 7 classes são requisitadas!por acaso nem nunca tinha ouvido falar dessa dica obrigado
 
Obrigado pela tua ajuda tão rápida, vou verificar o link que me forneces-te!Não posso generalizar uma vez que as 7 classes são requisitadas!por acaso nem nunca tinha ouvido falar dessa dica obrigado

Boas colega,
Sinceramente, se queres um concelho: Não uses nada disso.
É uma matéria que sai completamente fora do âmbito da cadeira e que nunca foi dada e não é um truque propriamente simples, logo não esperes ter o trabalho valorizado por causa disso. Aliás, o mais provavel é o prof descontar-te um bocado na nota por achar que complicaste sem necessidade nenhuma.

Faz isso assim repetidamente, fica um bocado longo e eventualmente feio, mas o prof não pode descontar por isso. Para o que é, serve muito bem, até porque como deves ter percebido no enunciado a classe Run tem uma importância minima (em termos de nota) neste trabalho.

Cumprimentos
 
Antes que mais queria agradecer as dicas que me foram Dadas!
Hoje fui apresentar o trabalho e embora tenha conseguído resolver o problema através da class reflect, não o usei com base no que o arkannis disse. Mas de qualquer forma deu para aprender e julgo que este "truque" me vai ser bastante útil no futuro!
Obrigado a todos
 
Antes que mais queria agradecer as dicas que me foram Dadas!
Hoje fui apresentar o trabalho e embora tenha conseguído resolver o problema através da class reflect, não o usei com base no que o arkannis disse. Mas de qualquer forma deu para aprender e julgo que este "truque" me vai ser bastante útil no futuro!
Obrigado a todos

É isso mesmo ;)
O que interessa é um gajo ir aprendendo uns truques novos, mesmo que não sejam para usar agora nos trabalhos da faculdade.
 
Sim, talvez para o teu caso a API de reflexão não seja o ideal. No entanto, penso que é uma técnica fundamental, que é tipicamente utilizada para geração de código, bem como em certos padrões de desenho como o Abstract Factory.
 
abstract factory?!! Pois ainda me falta saber muitas coisas, mas também só estou no primeiro ano!Mas gosto de andar sempre a inventar e a ver código para aprender!Agora estou a "aprender" a fazer quadros e botões!
 
Back
Topo