some image

Codes and Tags

Obtener nombre de un método en Java

Etiquetas: Blog, Programación 1 comment

Una de las estrategias para un desarrollo mantenible es poder hacer trace (rastrear) a las aplicaciones mientras se ejecutan, para esto existen diferentes tecnicas que implementan algunas librerias como por ejemplo en el caso de Java Log4j. Aunque el punto central no es hablar de Log4j, sino de como obtener el nombre de un metodo especifico durante su ejecución.

Para realizar esto, acudí a uno de los metodos que implementa nuestra clase Exception, el famoso método getMethodName(). Para realizar esto se deben tener las siguientes consideraciones :

1.) No se debe lanzar la excepción con throw sino crear una instancia de Exception de la siguiente forma :

  new Exception().getStackTrace()[1].getMethodName();

2.) El corchete que esta en el llamado al metodo getStackTrace()[esteCorchete], representa la instancia desde donde se hace el llamado al método. Ejemplo :

  //Si tiene el valor 0, mostrara el nombre del metodo actual
  new Exception().getStackTrace()[0].getMethodName();
  //Si tiene el valor 1, mostrara el nombre del metodo desde donde se ha invocado al metodo actual
  new Exception().getStackTrace()[1].getMethodName();
  //Asi sucesivamente...

Ahora si el código de Ejemplo :)

/***
 * Esta clase muestra un ejemplo para mostrar el nombre de los metodos,
 * donde se ejecuta una parte de codigo. Tal vez su utilidad se ve reflejada
 * en la parte del trace de una aplicacion.
 * 
 * @author [d-m-k]
 * http://codesandtags.org
 *
 */
public class EjemploNombreMetodosJava {
	
	public static void main(String[] args){
		System.out.println("Iniciando aplicacion...\n");
		EjemploNombreMetodosJava ejemplo = new EjemploNombreMetodosJava();
		
		//Se hace llamado a cada uno de los metodos, donde se puede evidenciar el nombre
		ejemplo.getNombreMetodo();
		ejemplo.metodo1();
		System.out.println("Suma >> " + ejemplo.suma(5, 8));
		ejemplo.metodo2();
		System.out.println("Resta >> " + ejemplo.resta(15, 32));
		
		System.out.println("\nFinalizando aplicacion...");
	}
	
	
	public void metodo1(){
		System.out.println("Metodo : " + getNombreMetodo());
		System.out.println("Habia una vez un codigo que se teletrasportaba....");
	}
	
	public int suma(int a, int b){
		System.out.println("Metodo : " + getNombreMetodo());
		return a + b;
	}
	
	public void metodo2(){
		System.out.println("Metodo : " + getNombreMetodo());
		System.out.println("... Y entonces los marcianos comenzaron a programar cada dia...");
		
	}
	
	public int resta(int a, int b){
		System.out.println("Metodo : " + getNombreMetodo());
		return a - b;
	}
	

	/**
	 * Aqui esta la magia
	 * @return
	 */
	public String getNombreMetodo(){
		//Retorna el nombre del metodo desde el cual se hace el llamado
		return new Exception().getStackTrace()[1].getMethodName();
	}

}

Datos de salida

Iniciando aplicacion...

Metodo : metodo1
Habia una vez un codigo que se teletrasportaba....
Metodo : suma
Suma >> 13
Metodo : metodo2
... Y entonces los marcianos comenzaron a programar cada dia...
Metodo : resta
Resta >> -17

Finalizando aplicacion...

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment