Dale pessoal.
Inton galera estou com uma duvida e nao sei se existe algo pronto.
Tipo tenho vários métodos e gostaria de no meio do método pegar o nome do mesmo, isso eh possível sem ter que
criar uma String para o método ?
Dale pessoal.
Inton galera estou com uma duvida e nao sei se existe algo pronto.
Tipo tenho vários métodos e gostaria de no meio do método pegar o nome do mesmo, isso eh possível sem ter que
criar uma String para o método ?
Use reflection, leia o artigo aqui no GUJ, veja se é isso que você quer.
Voce pode usar reflexão, que faz a classe “olhar para ela mesma”.
tipo:
Class cls = Class.forName("br.com.SuaClasse");
Method[] methods = cls.getDeclaredMethods();
System.out.println("METODOS DA CLASSE");
for (int i = 0; i < methods.length; i++) {
Method m = methods[i];
System.out.println(m);
System.out.println("NOME DO MÉTODO ------> " + m.getName());
System.out.println("PACOTE (Classe) ------> " + m.getDeclaringClass());
System.out.println("MODIFICADOR ------> " + Modifier.toString(m.getModifiers()));
Class pvec[] = m.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("PARÂMETRO #" + j + " " + pvec[j]);
Class evec[] = m.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("EXCEÇÃO #" + j + " " + evec[j]);
System.out.println("TIPO DE RETORNO ------> " + m.getReturnType());
System.out.println("-----");
}
abraços.
sucesso.
Só através de xunxo.
A reflexão não devolve o nome do método que você está.
O segredo está aqui:
http://www.guj.com.br/posts/list/87305.java#466928
Não é com reflection que se faz isso, e sim com um truque - cria-se um objeto do tipo Throwable, e pega-se o stack trace. Então você pega o primeiro elemento, mais ou menos assim:
Throwable thr = new Throwable();
thr.fillInStackTrace();
StackTraceElement[] ste = thr.getStackTrace();
// Você pode obter em ste[0] o nome do método, da classe, e a linha de programa.
É mais fácil usar uma biblioteca como o Log4J, que já faz isso por você na hora de imprimir o log.
[quote=ViniGodoy]Só através de xunxo.
A reflexão não devolve o nome do método que você está.
O segredo está aqui:
http://www.guj.com.br/posts/list/87305.java#466928[/quote]
É verdade, eu nem pensei nisso, você consegue todos os métodos, mas como saberia o que está sendo executado? Não tem nada na API para isso não? Que coisa…
Realmente, pela pilha de chamadas faz sentido.
Aew pessoal valew a ajuda, isso ja resolveu meu problema.