StackTraceElement stack[] = Thread.currentThread().getStackTrace();用到 StackTraceElement类,主要是stack[2]。stack[2].getClassName() 获取调用类名stack[2].getMethodName() 获取调用方法名stack[2].getFileName() 获取调用文件名示例如下:运行环境:jdk1.6package com.test;public class B {public static void main(String[] args) {A.test();}}class A {static void test(){StackTraceElement stack[] = Thread.currentThread().getStackTrace();System.out.println(stack[0]);//java.lang.Thread.getStackTraceSystem.out.println(stack[1]);//本方法的位置及所属类 com.test.A.test(B.java:10)System.out.println(stack[2]);//调用本方法的类 com.test.B.main(B.java:4)System.out.println("调用本方法是:"+stack[2].getClassName()+"类中的"+stack[2].getMethodName()+"方法");System.out.println("调用本方法的文件是"+stack[2].getFileName());String callName=stack[2].getClassName();System.out.println("调用test方法的类是:"+callName);//然后就可以根据调用本方法的类做一些限制或其他操作if (callName.endsWith("B")){System.out.println("B类调用了A类的test方法");}else{}}}输出结果为:java.lang.Thread.getStackTracecom.test.A.test(B.java:10)com.test.B.main(B.java:4)调用本方法是:com.test.B类中的main方法调用本方法的文件是B.java调用test方法的类是:com.test.BB类调用了A类的test方法
java中获取调用类及调用方法
最新推荐文章于 2024-08-17 03:50:35 发布