本文代码转自StackTraceElement的用法
/**
* StackTraceElement的用法
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new TestM().OuterMethod();
}
public void methodA(){
methodB();
}
public void methodB(){
methodC();
}
public void methodC(){
StackTraceElement[] stacks = Thread.currentThread().getStackTrace();
for(StackTraceElement s: stacks){
System.out.println("-------"+s.getMethodName()+" : "+s);
}
}
}
class TestM {
public void OuterMethod(){
new Test().methodA();
}
}
===打印结果===:
-------getStackTrace : java.lang.Thread.getStackTrace(Unknown Source)
-------methodC : org.feinno.icm.cms.Test.methodC(Test.java:24)
-------methodB : org.feinno.icm.cms.Test.methodB(Test.java:20)
-------methodA : org.feinno.icm.cms.Test.methodA(Test.java:16)
-------OuterMethod : org.feinno.icm.cms.TestM.OuterMethod(Test.java:33)
-------main : org.feinno.icm.cms.Test.main(Test.java:11)
通过getStackTraceElement 获得的 StackTraceElement数组,其取值的顺序是从Thread.getStackTrace方法开始,每一次调用该方法的
类或者方法输出,就和用eclipse 按ctrl点鼠标向上追踪代码一样的原理。