我知道如何找到哪个类调用我的方法,但这对我来说还不够。
我有一个问题,我有大约200个相同类(基类)的实例,并且它们具有唯一的标识符,我可以用它来分析问题。
有没有办法,如何找到哪些实例称为某种方法?
我知道调试器允许它,我能从代码中做些什么吗?
答案 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
}
}