两种方法之间的通信(有限制)

时间:2019-07-17 16:38:03

标签: java

该问题必须用Java解决,它如下:
假设我们有两个类A和B,每个类分别仅包含方法foo1()foo2()
A和B不包含任何变量,也不扩展\实现任何类\接口。
目的是为fun1()找到一种方法来识别它是否从fun2()内部被调用。 只能在fun1()fun2()内部进行更改。
仅允许使用标准Java库(例如java.mathjava.util等)。

到目前为止,我已经设法找到2种可能的解决方案,它们是:

  1. 使用System.setProperty(...)System.getProperty()
    在下面添加了实现此想法的代码。

  2. 创建文件并对其进行读\写操作。

    //The structure of the classes
    class A {
        public void fun1() {
            //...code goes here
        }
    }


    class B {
        public void fun2() {
            //...code goes here
        }
    }

    //implementation of solution 1)
    class A {
        public void fun1() {
            if(System.getProperty("fun2").equals("yes")) {
                //called from fun2 
            }
            else {
                //called from somewhere else
            }
        }
    }

    class B {
        public void fun2() {
            System.setProperty("fun2", "yes");
            new A().fun1();
            System.setProperty("fun2", "no");
        }
    }

我真的很想看到其他解决此问题的方法。

P.S。可以假设fun1()不会递归地调用自己。
(例如,在fun1()fun2()调用后调用自身的情况下,我的解决方案将是不正确的,因为它仍会认为该调用是由fun2()进行的。)

EDIT :如果可以再次查看该问题以进行重复,我将不胜感激,因为我正在寻找各种不同的答案\解决方案。
提供的重复链接中的问题已得到回答,并且仅包含一个有效的(限制性明智的)方法(getStackTrace())。
(还有另一个,但是它使用了sun库)

0 个答案:

没有答案