zoukankan      html  css  js  c++  java
  • [Java]取得当前代码所在函数的函数名

    要取得当前运行代码的函数名,可以用:

    Thread.currentThread().getStackTrace()[1].getMethodName();

    但是,这行代码有些过长,嵌入业务代码稍显突兀,这时可以采用下面的共通函数:

        public static String digoutMethodName() {
            return Thread.currentThread().getStackTrace()[2].getMethodName();
        }

    从上面代码可以看出,其本质是取当前线程的调用栈,栈的第一个元素是getStackTrace自己,第二个是digoutMethodName,第三个就是调用digoutMethodName的外界函数了。如果调用层次越深,调用栈越长,最终会到main函数处。

    以下为完整程序:

    package com.ufo.func;
    
    public class Tester {
        public static void main(String[] args) {
            foo();
            bar();
        }
        
        public static void foo() {
            System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
        }
        
        private static int bar() {
            System.out.println(digoutMethodName());
            System.out.println("----------------------");
            printStackMethods();
            return 0;
        }
        
        public static String digoutMethodName() {
            return Thread.currentThread().getStackTrace()[2].getMethodName();
        }
        
        private static void printStackMethods() {
            for(StackTraceElement ste:Thread.currentThread().getStackTrace()) {
                System.out.println(ste.getMethodName());
            }
        }
    }

    输出:

    foo
    bar
    ----------------------
    getStackTrace
    printStackMethods
    bar
    main

    2020年1月19日

  • 相关阅读:
    Asp.net性能优化总结(一)
    Visual C#常用函数和方法集汇总
    ASP.net下大文件上传的解决方案及WebbUpload组件源码
    正则表达式学习
    在Asp.net中为图像加入版权信息
    Cognos 维度函数
    Cognos8.3函数使用手册(二)
    cognos更新步聚
    Cognos8.3函数使用手册(一)
    Cognos 8 报表备份和恢复
  • 原文地址:https://www.cnblogs.com/heyang78/p/12215151.html
Copyright © 2011-2022 走看看