Imprimir nome do método que está sendo executado

tem como imprimir o nome do método que está sendo executado no momento?

vc poderia colocar um

System.out.println("metodo");

mas isso ira imprimir na console.

certo. mas não quero ter que escrever isso pra todo método que eu criar. quero uma forma automatica.

tipo

System.out.println (…getCurrentMethod())

algo assim.

[quote=avsouza]vc poderia colocar um

System.out.println("metodo");

mas isso ira imprimir na console. [/quote]

Cara, acho que não é bem isso que o alexswb tá querendo…

Uma boa opção é utilizar a API Reflection.

Abraços.

Reflection também não ajuda.

Tente:

System.out.println(new Throwable().getStackTrace()[0]);

Como brinde vc ainda leva o arquivo e a linha de código desse println.

nesse caso vale a dica do lgi2020

vc pode dar uma olhada aqui http://www.guj.com.br/posts/list/55.java

Exemplo de como descobrir todos os métodos de uma classe:

[code]
public class Main {
public static void main(String[] args) {

	SuaClasse suaClasse = new SuaClasse();

	for (Method method : suaClasse.getClass().getDeclaredMethods())
	{
		System.out.println("Método " + method.getName());
	}
}

}[/code]

Tutorial do GUJ: http://www.guj.com.br/java.artigo.10.1.guj

Estou realmente curioso em saber por que voce quer isso!

é que p/ cada método eu tenho que fazer uma chamada de log do tipo:

“iniciando método X bla bla bla”.

tenho preguiça de ter que digitar toda vez.

ai eu faria de uma forma que bastasse eu colar o “iniciando metodo”+getCurrentMethod(), sem ter que ficar mudando o nome do metodo que está sendo executado.

dei uma olhada em tutorias reflect mas ainda não consegui fazer. tem um getClass.getEnclosingMethod la, mas retorna sempre nulo.

Ei… não serve o que coloquei ali em cima???

É o que eu uso para a mesma tarefa!!!

E ali você ainda pode procurar por elementos da StackTrace antes do 0, para, por exemplo, achar que método chamou uma rotina de log sua.

Se sua idéia é fazer um log, pesquise sobre a classe java.util.Logger.

Ela já tem um método que faz isso para você. Acha o nome dos métodos, formata timestamps, manda o log para um arquivo, loga direito exceções.

Ou o log4j … com seus patterns formats…

a gente ja usa log4j, mas eu não posso mexer na estrutura. so o que eu faco eh chamar o Applicationlog.debug com a string e o nome do metodo.

vinigodoy, nao tinha visto o codigo q vc tinha colado na sua mensagem. vou tentar do jeito q vc falou.

acho que isso resolve meu problema, vinigodoy. valeu!

[quote=alexswb]certo. mas não quero ter que escrever isso pra todo método que eu criar. quero uma forma automatica.

tipo

System.out.println (…getCurrentMethod())

algo assim.

[/quote]
No Eclipse, você pode digitar systrace (ou apenas systr) e dar ctrl + espaço e ele automaticamente insere o sysout e o nome do método. Pode ser mais prático.

Mas é vulnerável a refatorações.