Calling hierarchy in Java
2007-10-20 06:45:13
With the next code you'll be able to know the calling hierarchy at runtime, or, in layman's words, who the heck is calling your code while the program is running. It has a problem, tough: it only works for Java 5 or better.
public class Llamadas
{
static public void fin()
{
StackTraceElement trace[] = Thread.currentThread().getStackTrace();
for (StackTraceElement St : trace)
{
System.out.println(St);
}
}
static public void salto()
{
fin();
}
public static void main(String[] args)
{
salto();
}
}
Should print something like...
java.lang.Thread.getStackTrace(Unknown Source)
pruebas.Llamadas.fin(Llamadas.java:7)
pruebas.Llamadas.salto(Llamadas.java:16)
pruebas.Llamadas.main(Llamadas.java:21)
The code is extremely simple: the main class calls salto, who itself calls the fin method. This fin method contains a foreach wich prints the return from a call to getStackTrace, the subroutine call stack.