Reflection  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
pm
JavaEvangelist

Membro desde: 28/01/2005 12:42:15
Mensagens: 438
Offline

Alguem sabe se existe alguma forma de identificar o nome do metodo que o objecto X teve seu metodo acionado ?

Por exemplo:



Tem como eu identificar que o metodo que chamou x.metodoX() foi metodoY() ?

ki confusão !!!

vlw
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Tem, mas não com Reflection, e sim com um truque (crie um Throwable, e chame o método getStackTrace.
[WWW]
Anthony Cezario
Thread.start()

Membro desde: 05/01/2005 13:08:57
Mensagens: 40
Localização: Limeira, SP
Offline

Mais facil você padronizar as chamadas desse tipo enviando um parametro tipo Method
ex:


ou é claro, enviando ao invés e uma classe Method, apenas uma string contendo a informação de classe e método
[MSN]
pm
JavaEvangelist

Membro desde: 28/01/2005 12:42:15
Mensagens: 438
Offline

vlw pessoal !

eu estou procurando alguma coisa que fique transparente pra quem chamar a classe que precisa desta informação.

implementei isso, conforme thingol tinha sugerido



>
fabiofalci
GUJ Master
[Avatar]

Membro desde: 11/04/2006 09:23:14
Mensagens: 1057
Localização: Porto Alegre - RS
Offline

Olá!

Pode usar AOP
[WWW] [MSN] [ICQ]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Esse truque (usar getStackTrace) não funciona direito com .NET.
Em .NET o otimizador pode efetuar "inlining" dos métodos, tal como em Java, mas o equivalente do getStackTrace em .NET não tem a informação "não-otimizada" que é necessária para dizer que rotina chamou a sua rotina. Então às vezes você não consegue saber quem chamou a sua rotina, mas quem chamou a rotina que chamou a sua rotina (se apenas um nível de "inlining" tiver sido efetuado pelo runtime do .NET.
[WWW]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

pm wrote:vlw pessoal !

eu estou procurando alguma coisa que fique transparente pra quem chamar a classe que precisa desta informação.


No Java 1.5 já é possível fazer isso simplesmente pedindo essa informação a Thread corrente -> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#getStackTrace()

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team