java中提供了Thread.currentThread().getStackTrace()和new Throwable().getStackTrace()来获取堆栈信息,通过该方法返回堆栈数组。其数组中包含类对象方法执行相关信息,第一个元素为Thread执行元素,索执行的方法为getStackTrace。其后依次是嵌套包裹执行的最里层,依次向外。
下面通过实例说明:
下面通过实例说明:
public static void display(){
StackTraceElement[] stes = Thread.currentThread().getStackTrace();
for (int i = 0; i < stes.length; i ++) {
System.out.println(i + "<------>" + stes[i].getClassName() + "<------>" + stes[i].getMethodName() + "<------>" + stes[i].getFileName());
}
}
public static void main(String[] args) {
display();
}
若仅获取执行顺序类相关信息,可通过如下sun提供反射方法实现:
for(int i = 0; ; i++) {
Class<?> tclazz = Reflection.getCallerClass(i);
if(tclazz == null)
break;
System.out.println(tclazz);
}
顺序同堆栈返回,第一个为里层反射类,而二个为调用反射方法类,以此类推。