本文代码转自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点鼠标向上追踪代码一样的原理。