![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
CurrentMethodName.javapackage com.wenjx.aboutClass;
//JDK 1.5+
public class CurrentMethodName{
public static void main(String args[]) {
System.out.println("main函数正在运行");
// System.out.println("调用main方法的函数为:"+Thread.currentThread().getStackTrace()[2].getMethodName());
trace(Thread.currentThread().getStackTrace());
new CurrentMethodName().doit();
trace(Thread.currentThread().getStackTrace());
}
public void doit() {
System.out.println("doit函数正在运行");
System.out.println("调用doit方法的函数为:"+Thread.currentThread().getStackTrace()[2].getMethodName());
trace(Thread.currentThread().getStackTrace());
doitagain();
}
public void doitagain() {
System.out.println("doitagain函数正在运行");
System.out.println("调用doitagain方法的函数为:"+Thread.currentThread().getStackTrace()[2].getMethodName());
trace(Thread.currentThread().getStackTrace());
}
public static void trace(StackTraceElement e[]) {
System.out.println("trace函数正在运行");
System.out.println("调用trace方法的函数为:"+Thread.currentThread().getStackTrace()[2].getMethodName());
boolean doNext = false;
for (StackTraceElement s : e) {
if (doNext) {
System.out.println("程序获得的函数名:"+s.getMethodName());
return;
}
doNext = s.getMethodName().equals("getStackTrace");
}
}
}
程序输出为:
main函数正在运行
trace函数正在运行
调用trace方法的函数为:main
程序获得的函数名:main
doit函数正在运行
调用doit方法的函数为:main
trace函数正在运行
调用trace方法的函数为:doit
程序获得的函数名:doit
doitagain函数正在运行
调用doitagain方法的函数为:doit
trace函数正在运行
调用trace方法的函数为:doitagain
程序获得的函数名:doitagain
trace函数正在运行
调用trace方法的函数为:main
程序获得的函数名:main