0
我碰到過Java中的一些東西,我真的在撓撓頭腦,試圖弄清楚發生了什麼。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(!實例變量)現在是零。它被初始化爲doSomething()中的非空值...現在它怎麼變爲空?它沒有被明確設置爲null。所有這些方法調用(就我所知而言)都發生在同一個線程中。
我在這裏錯過了什麼?那個實例變量如何可以爲空?
清理你能告訴所有的代碼? – bhspencer
如果是線程問題,每個細節都很重要 - 你應該發佈一個[mcve](http://stackoverflow.com/help/mcve) – assylias
內容:initInstanceVar();? – Arpit