我遇到过Java中的一些东西让我真的摸不着头脑,想弄清楚发生了什么。
我创建了一个对象objA,并在其构造函数中将此对象添加到另一个对象objB:
objB.addListener(this);
稍后,在objA上调用一个方法,该方法调用objB中的方法,然后objA调用该方法:
objA.doSomething()=> objB.doSomethingAlso => objA.doSomethingElse()
objA.doSomething();
在objA:
public void doSomething() {
_instanceVar = initInstanceVar();
objB.doSomethingAlso();
}
在objB中:
public void doSomethingAlso() {
...
getRefToObjA().doSomethingElse();
}
再次在objA:
public void doSomethingElse() {
_instanceVar.someMethod();
}
但是,当调用doSomethingElse()时,_instanceVar(实例变量!)现在为null。它在doSomething()中初始化为非null值...那么现在怎么可能为null?它没有在任何地方显式设置为null。所有这些方法调用(对我来说很明显)都发生在同一个线程中。
我在这里缺少什么?该实例变量如何为空?
答案 0 :(得分:0)
这里只能发生两件事
initInstanceVar();
返回null