以下示例
public class C{
A myA;
public C(){
myA = new A();
}
}
public class A{
C myOrigin;
public A(){
// How to set myOrigin to the instance
// which invoke this.
}
}
是否有办法获得类C的实例,它创建了A的实例(在这个实例中)。换句话说:A的实例知道它初始化的对象吗?
我知道,我可以使用这个作为参数,public class C{
A myA;
public C(){
myA = new A(this);
}
}
public class A{
C myOrigin;
public A(Object pObject){
myOrigin = pObject;
}
}
但我正在寻找一种没有任何参数的方法。
我非常怀疑这是可能的,但我很想听听其他的情况。我怀疑它的原因是因为它不是一个调用方法的实例,而是另一个方法。通过堆栈跟踪可以很容易地找到调用方法(例如throw &捕获异常并检查其堆栈跟踪以查找调用者)。然而,实例只是方法的一个隐藏参数,我们无法知道调用方法的参数是什么。(至少,据我所知没有。)
因此,我认为将this
传递给其他方法是唯一的方法。