Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我不知道';我不理解这个NullPointerException_Java - Fatal编程技术网

Java 我不知道';我不理解这个NullPointerException

Java 我不知道';我不理解这个NullPointerException,java,Java,我有以下代码: RoomCell r = b.GetRoomCellAt(1, 2); assertTrue(r.isDoorway()); 第二行失败,出现空指针异常,就好像r没有被实例化一样。但我将它设置为该方法检索的单元格,因此它显然不是null 为什么可能会出现此错误?函数GetRoomCellAt()可能仍然返回NULL函数GetRoomCellAt()可能仍然返回NULL您的完整堆栈跟踪是什么?需要确定以下哪一项是原因: GetRoomCellAt可能找不到值并返回null Get

我有以下代码:

RoomCell r = b.GetRoomCellAt(1, 2);
assertTrue(r.isDoorway());
第二行失败,出现空指针异常,就好像r没有被实例化一样。但我将它设置为该方法检索的单元格,因此它显然不是null


为什么可能会出现此错误?

函数
GetRoomCellAt()
可能仍然返回
NULL
函数
GetRoomCellAt()
可能仍然返回
NULL

您的完整堆栈跟踪是什么?需要确定以下哪一项是原因:

GetRoomCellAt可能找不到值并返回null

GetRoomCellAt的实现可能访问空指针

isDoorway的实现可能访问空指针


仅供参考,使用@Nullable注释来注释参数和返回类型是一种很好的做法

您的完整堆栈跟踪是什么?需要确定以下哪一项是原因:

if(r != null)
{
  assertTrue(r.isDoorway());
}
GetRoomCellAt可能找不到值并返回null

GetRoomCellAt的实现可能访问空指针

isDoorway的实现可能访问空指针

仅供参考,使用@Nullable注释对参数和返回类型进行注释是一种很好的做法

if(r != null)
{
  assertTrue(r.isDoorway());
}
而不是

assertTrue(r.isDoorway());


b.GetRoomCellAt(1, 2); 
此单元格可能为空。因此,只有您才能获得
nullPointerException

而不是

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。

获得
null点异常的唯一方法是
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。检查方法docs o source…因为
b.GetRoomCellAt(1,2)
返回null或是因为
r.isDoorway
中的某个字段是
null
。正如您所说,因为
r
null
。b.GetRoomCellAt(1,2)必须返回null。检查方法docs o source…因为
b.GetRoomCellAt(1,2)
返回null或,因为
r.isDoorway
中的某个字段是
null
+1,以便让我阅读
@Nullable
注释。一个快速的谷歌搜索让我想到:)如果你使用Eclipse,你现在会得到内置的空性分析(尽管你可能需要打开它)。也就是说,我经常发现番石榴的可选成分更有效。+1让我阅读了
@Nullable
注释。一个快速的谷歌搜索让我想到:)如果你使用Eclipse,你现在会得到内置的空性分析(尽管你可能需要打开它)。也就是说,我经常发现番石榴的选择更有效。