如何查找调用方法的类的实例

时间:2014-03-17 15:22:41

标签: java

我知道如何找到哪个类调用我的方法,但这对我来说还不够。

我有一个问题,我有大约200个相同类(基类)的实例,并且它们具有唯一的标识符,我可以用它来分析问题。

有没有办法,如何找到哪些实例称为某种方法?

我知道调试器允许它,我能从代码中做些什么吗?

1 个答案:

答案 0 :(得分:1)

您将该实例的引用传递给被调用的方法。例如,假设您有两个对象:

class ObjectA {
    public void methodA() {
        new ObjectB().methodB();
    }
}

class ObjectB {
    public void methodB() {
        // How can I know who called me?
    }
}

如果MethodB需要知道ObjectA的哪个实例调用它,那么它会接受该信息作为参数:

class ObjectA {
    public void methodA() {
        new ObjectB().methodB(this);
    }
}

class ObjectB {
    public void methodB(ObjectA caller) {
        // "caller" is who called me
    }
}

有很多方法可以调整它。例如,也许任何给定的ObjectB实例都应该引用创建的ObjectA

class ObjectA {
    public void methodA() {
        new ObjectB(this).methodB();
    }
}

class ObjectB {

    private final ObjectA caller;

    public ObjectB(ObjectA caller) {
        this.caller = caller;
    }

    public void methodB() {
        // "caller" called me
    }
}

或者您可能不希望将两个对象耦合在一起,并希望采用更通用的方法。您声称对象具有某种标识符,该标识符是什么?可能是String

class ObjectA {

    private String identifier;

    // other code

    public void methodA() {
        new ObjectB().methodB(identifier);
    }
}

class ObjectB {
    public void methodB(String callerID) {
        // "callerID" identifies who called me
    }
}