Executar método tendo apenas o seu nome[Resolvido]  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Naruffy
JavaEvangelist
[Avatar]

Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline

Olá a todos

Preciso executar um método apartir do seu nome salvo em uma String

li alguns tópicos aqui no GUJ e achei umas coisas sobre Reflection, dei um pesquisada e cheguei ao seguinto código de teste



porém não consigo fazer funcionar de jeito nenhuma

Estou fazendo oque de errado?

Vlw

This message was edited 1 time. Last update was at 21/07/2008 10:07:55

Naruffy
JavaEvangelist
[Avatar]

Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline

Achei a respota dois minutos depois

Gustavo Yu
Thread.start()
[Avatar]

Membro desde: 26/05/2008 20:13:38
Mensagens: 41
Offline

Declara o Imprime como estático e chama o método normalmente.

[]'s
Gustavo Yu
[Email] [MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

É bom ler o javadoc dos métodos antes de usa-los. O primeiro parämetro do método invoke diz ao java "imprime" de que objeto deve ser chamado. No caso, seu métod imprime não é estático, então, você precisa de um objeto no parâmetro:


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Naruffy
JavaEvangelist
[Avatar]

Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline

ViniGodoy wrote: No caso, seu métod imprime não é estático, então, você precisa de um objeto no parâmetro:



Mas eu necessáriamente tenho que criar uma nova instância do meu objeto?? não posso possar a já instanciada, como eu fiz usando o this?

Obrigado

ricoldi
JavaEvangelist
[Avatar]

Membro desde: 04/11/2007 19:11:40
Mensagens: 414
Localização: Ribeirão Preto - SP
Offline

Naruffy wrote:
ViniGodoy wrote: No caso, seu métod imprime não é estático, então, você precisa de um objeto no parâmetro:



Mas eu necessáriamente tenho que criar uma nova instância do meu objeto?? não posso possar a já instanciada, como eu fiz usando o this?

Obrigado



Pode usar o this tranquilamente sim! o exemplo do ViniGodoy é que se o metodo é estatico você não precisa passar o objeto, por motivos obvios que metodos de classe precisam de um objeto. e tambem não é possivel passar null se for executar o metodo em outra classe que não a que possue o metodo, resumindo ali onde você passa "null" ou "this" vai o objeto que possui o metodo a ser executado, manja?

Att
Ricoldi

This message was edited 2 times. Last update was at 21/07/2008 10:34:23


*Todo post expressa minha opinião e não uma verdade inquestionável*
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

Sim, eu só quis reforçar que é necessário passar alguma instância.

Aliás, como vc está usando this num método estático? Isso que vc postou nem é possível! :o
O Java vai dar o erro "this cannot be used in a static context".

Mas claro, se vc tiver um método não estático, poderá usar o this. Não é muito comum, já que geralmente usamos reflexão sobre um outro objeto, mas é possível.

This message was edited 1 time. Last update was at 21/07/2008 10:36:01


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
Naruffy
JavaEvangelist
[Avatar]

Membro desde: 28/03/2008 18:54:49
Mensagens: 324
Offline

ViniGodoy wrote:
Aliás, como vc está usando this num método estático? Isso que vc postou nem é possível! :o
O Java vai dar o erro "this cannot be used in a static context".


Não sabia dessa de não poder usar this em método estático, este código eu fiz só um exemplo bobo que nem testei,
mas na minha classe original deu certo, muito obrigado a todos
71C4700
JavaEvangelist
[Avatar]

Membro desde: 25/03/2008 08:18:35
Mensagens: 364
Localização: Por ai...
Offline

Não querendo resucitar, mas
Tem como com Reflection saber qual metodo, é o retorno de certo atributo?

Ajuda ??

[]This is Job!!!°°°°°
71C4700
JavaEvangelist
[Avatar]

Membro desde: 25/03/2008 08:18:35
Mensagens: 364
Localização: Por ai...
Offline

Alguem ?

[]This is Job!!!°°°°°
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20581
Localização: Curitiba/PR
Offline

71C4700 wrote:Alguem ?


Não fique "upando" tópicos. Ao invés de fazer isso, reformule a sua pergunta.

Eu mesmo não entendi. Como assim "qual método é retorno"?
Um método não é retorno.

Ou você está falando do getter?
Se for, não tem. A reflexão não consegue olhar para a implementação do método.

Seria necessário marcar o atributo ou o método com uma anotação que já diga isso para as classes de reflexão, ou usar um padrão como o JavaBeans onde vc garante que os gets e sets correspondem a atributos específicos.

Aliás, se vc já abriu um tópico para isso:
http://www.guj.com.br/posts/list/97979.java

Por que postou novamente a dúvida aqui? Por lá o pessoal já até te deu as respostas!

This message was edited 5 times. Last update was at 26/07/2008 10:19:03


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team