Java语言怎么实现主程序输入一个函数,函数里输出主程序调用它的名字是什么

Java语言怎么实现主程序输入一个函数,函数里输出主程序调用它的名字是什么?怎么输出它的名字呢

【以下回答由 GPT 生成】

问题解答

在Java中,可以使用Thread.currentThread().getStackTrace()方法来获取当前线程的调用栈信息。通过遍历调用栈,即可获取当前函数的名称以及调用函数的名称。

下面是一个示例代码,能够实现输出调用函数的名称的功能。

public class CallerExample {

    public static void main(String[] args) {
        CallerExample caller = new CallerExample();
        caller.call();
    }

    public void call() {
        String callerName = getCallerName();
        System.out.println("调用我的函数的名称是:" + callerName);
    }

    private String getCallerName() {
        // 获取调用栈信息
        StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();

        // 遍历调用栈信息,找到调用本函数的函数名称
        for (StackTraceElement stackTraceElement : stackTraceElements) {
            String className = stackTraceElement.getClassName();
            String methodName = stackTraceElement.getMethodName();
            if (!className.equals(CallerExample.class.getName()) && !methodName.equals("getCallerName")) {
                return methodName;
            }
        }

        return null;
    }
}

以上代码定义了一个CallerExample类,在main方法中调用call方法,而call方法中通过调用getCallerName方法来获取到调用它的函数的名称,并进行输出。

运行上述代码,控制台会输出调用我的函数的名称是:main,表示call方法是被main方法调用。

请注意,getCallerName方法中的判断语句!className.equals(CallerExample.class.getName()) && !methodName.equals("getCallerName")用来排除掉调用栈中属于当前类和getCallerName方法的部分,确保只返回调用getCallerName的函数名称。

希望以上回答能解决你的问题,如果有其他疑问,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

在Java语言中,可以使用反射(Reflection)机制来获取调用当前函数的方法名