java trace stack_【z】Java中查看一个方法被调用的层次(Reflection、StackTrace) | Li...

1package test;

2public class Main {

3public static void main(String[] args) {

4new Test().test();

5}

6}

1package test;

2

3import java.util.Map;

4import sun.reflect.Reflection;

5

6public class Test {

7public void test() {

8System.out.println("------------Reflection.getCallerClass(i)------------");

9System.out.println("Reflection.getCallerClass(0)=" + Reflection.getCallerClass(0));

10System.out.println("Reflection.getCallerClass(1)=" + Reflection.getCallerClass(1));

11System.out.println("Reflection.getCallerClass(2)=" + Reflection.getCallerClass(2));

12System.out.println("Reflection.getCallerClass(3)=" + Reflection.getCallerClass(3));

13System.out.println("Reflection.getCallerClass(4)=" + Reflection.getCallerClass(4));

14

15System.out.println("

16------------new Throwable().getStackTrace()------------");

17StackTraceElement[] elements =new Throwable().getStackTrace();

18for (int i =0; i < elements.length; i++) {

19System.out.println(elements[i]);

20}

21

22System.out.println("

23------------Thread.currentThread().getStackTrace()------------");

24elements = Thread.currentThread().getStackTrace();

25for (int i =0; i < elements.length; i++) {

26System.out.println(elements[i]);

27}

28

29System.out.println("

30------------Thread.getAllStackTraces()------------");

31Map map = Thread.getAllStackTraces();

32elements = map.get(Thread.currentThread());

33for (int i =0; i < elements.length; i++) {

34System.out.println(elements[i]);

35}

36}

37

38}

运行结果:

————Reflection.getCallerClass(i)————

Reflection.getCallerClass(0)=class sun.reflect.Reflection

Reflection.getCallerClass(1)=class test.Test

Reflection.getCallerClass(2)=class test.Main

Reflection.getCallerClass(3)=null

Reflection.getCallerClass(4)=null

————new Throwable().getStackTrace()————

test.Test.test(Test.java:33)

test.Main.main(Main.java:5)

————Thread.currentThread().getStackTrace()————

java.lang.Thread.getStackTrace(Thread.java:1426)

test.Test.test(Test.java:39)

test.Main.main(Main.java:5)

————Thread.getAllStackTraces()————

java.lang.Thread.dumpThreads(Native Method)

java.lang.Thread.getAllStackTraces(Thread.java:1477)

test.Test.test(Test.java:45)

test.Main.main(Main.java:5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值