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日

  • 相关阅读:
    DOM
    js中字符串常规操作
    placeholer改变默认灰色
    css重置reset.css
    倒计时跳转
    手机中间四位用*代替
    animation
    过渡
    flex布局
    css3几个新属性
  • 原文地址:https://www.cnblogs.com/heyang78/p/12215151.html
Copyright © 2011-2022 走看看