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]
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.