Como ejemplo en el siguiente trozo de código la función 'print' tiene un comportamiento u otro dependiendo de que método le llama. En general esto no es una buena práctica de programación pero sirve como ejemplo ilustrativo.
public class Ejemplo{
public static void print(){
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
StackTraceElement e;
String str = stackTraceElements[2].getMethodName();
if(str.equals("other")){
System.out.println("Other message!");
}
else{
System.out.println("Hello world!");
}
}
public static void other(){
print();
}
public static void main(String[] args){
print();
other();
}
}
La llamada 'Thread.currentThread().getStackTrace()' devuelve un array de elementos 'StackTraceElement', cada uno de estos elementos representa una llamada de la pila de llamadas a funciones.
En el ejemplo anterior se consulta el nombre del método, pero se pueden extraer más datos, más información en el javadoc de StackTraceElement.
0 comentarios:
Publicar un comentario