在写代码的时候我们可能会需要当前的方法名,特别是在输出一些调试信息的时候,但是如果使用字符串硬写的话不太好,API好像也不带对应的功能,如果细心的话,异常信息里面是带出错的方法名的,我们可以dump stack trace并分析得到当前方法的方法名,实际上有更好的方法,和dump stack trace类似:
public static String getCurrentMethodName() {
StackTraceElement element=Thread.currentThread().getStackTrace()[3];
return element.getClassName()+"."+element.getMethodName();
}
为什么是3呢?从0到2分别是:
java.lang.Thread.dumpThreads
java.lang.Thread.getStackTrace
xxx.Xxxx.getCurrentMethodName:也就是你定义这个工具方法的类
(Visited 415 times, 1 visits today)
2007年8月10日 at 10:34
这种做法只适合于JDK1.5 :em20:
如果是JDK1.4 可以这样用(效率要差一点)
public static String getCurrentMethodName() {
StackTraceElement element = new Throwable().getStackTrace()[1];
return element.getClassName() + “.” + element.getMethodName() + ” in ” + element.getLineNumber();
}
2007年8月10日 at 21:52
呵呵,这个倒是没有注意。
效率可能是差一点,因为生成了一个Throwable实例,但是问题不大。
另外这个方法一般也就是调试的时候用,在产品中应该是不会调用的。