解惑

解己之惑,解人之惑

得到当前方法

在写代码的时候我们可能会需要当前的方法名,特别是在输出一些调试信息的时候,但是如果使用字符串硬写的话不太好,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 346 times, 1 visits today)

2 Comments

  1. 这种做法只适合于JDK1.5 :em20:

    如果是JDK1.4 可以这样用(效率要差一点)
    public static String getCurrentMethodName() {
    StackTraceElement element = new Throwable().getStackTrace()[1];
    return element.getClassName() + “.” + element.getMethodName() + ” in ” + element.getLineNumber();
    }

  2. 呵呵,这个倒是没有注意。
    效率可能是差一点,因为生成了一个Throwable实例,但是问题不大。
    另外这个方法一般也就是调试的时候用,在产品中应该是不会调用的。

发表评论

邮箱地址不会被公开。 必填项已用*标注

© 2024 解惑

本主题由Anders Noren提供向上 ↑