Java 检查函数是否被另一个调用

所以

我在同一个类中有 2 个函数,比如function_1()下面function_2()的结构;

public class JavaClass {
    function_1() {
        if (wasCalledbyfunction_2()) {
            ... do something
        }
    ...
    }

    function_2() {
        function_1()
        ...
    }

我很难找到实现该方法的wasCalledbyfunction_2()方法。也就是说,如果 function_1 被函数 2 调用,我想改变前者的行为。

我尝试过使用内置的 Stack Trace 方法,但我对如何实际实现它缺乏了解。

任何帮助表示赞赏!

乌萨马·扎格杜德

您可以使用 : StackTraceElement.getMethodName(),该方法的调用返回包含此堆栈跟踪元素表示的执行点的方法的名称。

public class JavaClass {
    void function_1() {

        StackTraceElement stackTraceElements[] = (new Throwable()).getStackTrace();
        if (stackTraceElements[1].getMethodName().equals("function_2")) {
            System.out.println("Called by function_2");
        } else {
            System.out.println("Called by another method !");
        }
    }

    void function_2() {
        function_1();
    }

    void function_3() {
        function_1();
    }

    public static void main(String[] args) {
        new JavaClass().function_2();
        new JavaClass().function_3();

    }
}

输出 :

Called by function_2
Called by another method !

stackTraceElements[0].getMethodName()将包含当前方法名称:function_1

stackTraceElements[2].getMethodName()将包含调用方方法名称:function_2

stackTraceElements[3].getMethodName()将包含第一个调用方方法名称:main

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

另一个内的Java调用构造函数

从另一个调用一个构造函数,Java重载

如何在Java中从另一个调用一个构造函数?

在Java中从另一个调用一个构造函数

如何用Java 8超时在另一个函数内调用通用函数?

一个Java线程如何检查另一个线程的状态,例如另一个线程是否被阻塞?

检查对象列表是否包含Java中的另一个对象

如何在Java中检查日期是否大于另一个日期?

检查类对象是否是Java中另一个类对象的子类

如何检查列表是否是Java中另一个列表的子集?

检查字符串是否是另一个Java的子字符串

如何使用Java检查Selenium Webdriver中另一个元素中是否存在一个元素?

Java流映射调用另一个构造函数

如何从Java中的另一个AWS Lambda调用AWS Lambda函数?

Java:if语句后从另一个调用构造函数

迭代Java 8中的List并在迭代时调用另一个函数

Android java无法从另一个类调用函数。怎么做?

在Android Java中的另一个类中调用函数

如何从具有上下文的另一个类调用函数(android,java)

在一个jsp文件中创建Java函数,然后从另一个jsp文件中调用它

在 Java 中,是否可以在另一个类中使用一个类的元素/函数?

从Java程序调用另一个类

Java从另一个类调用方法

Java NetBeans用另一个调用ActionListener

使用Java从另一个类调用变量

调用Java中的另一个类

Java:从另一个类调用值

在Java中是否可以调用另一个类的main方法并返回到调用代码?

Java-如何检查Linux上是否正在运行另一个(非Java)进程