我認爲這段代碼會添加一個對象到適當的向量,但我得到一個空指針異常。我知道Actor a
存在,因爲actors.add(a)
按預期工作。我研究瞭如何測試某個對象是否實現了一個接口,但是我可以找到的所有示例都詳細說明了如何調用接口的方法,而不是調用需要該接口的實例的方法。爲什麼此代碼無法正確檢查接口?
public void addActor(Actor a) {
actors.add(a); // actors is a vector
if (a instanceof Drawable) {
panel.addDrawable((Drawable) a);
}
}
而且在面板:
public void addDrawable(Drawable d) {
images.add(d); // images is a vector
}
您可以向矢量添加null就好了。 –
我不知道問題是什麼 - 通過「調用接口的方法而不是調用需要該接口的實例的方法」的含義是什麼? –
你得到的NPE唯一可能的地方是(如果你說你是積極的Actor a不是null,那麼'panel.addDrawable((Drawable)a);'就行了。面板'必須爲空,除非有其他的代碼,你沒有向我們展示,顯示我們的例外本身將是很好的 – Austin