我有以下代碼:我不明白這個NullPointerException異常
RoomCell r = b.GetRoomCellAt(1, 2);
assertTrue(r.isDoorway());
第二行與一個空指針異常失敗,因爲如果R沒有被實例化。但是我將它設置爲等於該方法檢索的單元格,因此它顯然不爲空。
爲什麼我可能會得到這個錯誤?
我有以下代碼:我不明白這個NullPointerException異常
RoomCell r = b.GetRoomCellAt(1, 2);
assertTrue(r.isDoorway());
第二行與一個空指針異常失敗,因爲如果R沒有被實例化。但是我將它設置爲等於該方法檢索的單元格,因此它顯然不爲空。
爲什麼我可能會得到這個錯誤?
函數GetRoomCellAt()
可能仍然可以返回NULL
。
什麼是您的完整堆棧跟蹤?這是必要的,以確定哪些以下是原因:
這有可能是GetRoomCellAt沒有找到值並返回null
這有可能是GetRoomCellAt實施訪問一個空指針
這有可能是isDoorway實施訪問一個空指針
僅供參考,它是使用@Nullable進行註解參數和返回類型
代替
assertTrue(r.isDoorway());
b.GetRoomCellAt(1, 2);
該細胞可以爲空。所以只有你得到nullPointerException
你會得到一個NullPointerException
的唯一方法是如果r
確實是null
。你可以把這個在您的測試條件,以確保如果r
實際上是null
,那麼會導致測試失敗:
RoomCell r = b.GetRoomCellAt(1, 2);
assertNotNull(r);
assertTrue(r.isDoorway());
如果r
是null
,那麼測試的早期失敗,並且避免了NPE。
正如你所說,因爲'r' **是'null' **。 –
b.GetRoomCellAt(1,2)必須返回null。檢查方法文檔的來源... – Thihara
,因爲'b.GetRoomCellAt(1,2);'返回空 –