方法内 如何得到当前方法名

本文介绍了两种在Java中获取当前执行方法名称的方法。一种适用于JDK1.4,通过抛出异常并获取堆栈跟踪的方式实现;另一种适用于JDK1.5及以上版本,采用线程堆栈跟踪的方法。这两种方法均可帮助开发者在单元测试中轻松记录方法的执行情况。

做单元 测试时,输出日志想知道当前 在执行哪个方法,直接用reflect没想到怎么写,在网上搜索了一下,可以这样写,

分享下,看看大家 还有没有 相关别的好方法。

 

JDK1.4 

public class MyTest {

    public static void main(String args[]) {

      new MyTest().doit();

    }

    public void doit() {

      System.out.println

         (new Exception().getStackTrace()[0].getMethodName());

    }

}

 

JDK1.5, a new technique is available.

public class Test {
 public static void main(String args[]) {
    trace(Thread.currentThread().getStackTrace());
    new Test().doit();
    trace(Thread.currentThread().getStackTrace());
 }
 public void doit() {
    trace(Thread.currentThread().getStackTrace());
    doitagain();
  }
 public void doitagain() {
    trace(Thread.currentThread().getStackTrace());
  }

 public static void trace(StackTraceElement e[]) {
   boolean doNext = false;
   for (StackTraceElement s : e) {
       if (doNext) {
          System.out.println(s.getMethodName());
          return;
       }
       doNext = s.getMethodName().equals("getStackTrace");
   }
 }
}

 

main
doit
doitagain
main
参考: http://www.rgagnon.com/javadetails/java-0420.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值