我不明白这个NullPointerException异常
问题描述:
我有以下代码:我不明白这个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);'返回空 –