tem como imprimir o nome do método que está sendo executado no momento?
Imprimir nome do método que está sendo executado
16 Respostas
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.
vc poderia colocar umSystem.out.println("metodo");mas isso ira imprimir na console.
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
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());
}
}
}
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!
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.
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.