java - java中简单的空检查时出现NullPointerException

标签 java null rmi nullpointerexception

我在仅进行简单空检查的行处收到 NullPointerException。该行如下:

if(routingTable[commonBitGroups][nextNumberOfOther-1]==null)

我验证该行之前的数组不为空。 commonBitGroups 和 nextNumberOfOther 都是简单的 int 类型。

我应该补充一点,这一行是使用 rmi 的应用程序的一部分,也是扩展 UnicastRemoteObject 并实现 RemoteInterface 的类的一部分。我指定这一点是因为我的印象是,即使在处理同步时也可能会发生 NullPointerException如果没有什么是真正的空(也许当某些东西被锁定时),并且我在这个应用程序中处理同步。包含该行的方法虽然没有同步,并且在我的代码中没有任何地方我尝试使用该数组作为监视器(我只有一些同步方法,没有更小的同步块(synchronized block),所以我无处明确选择特定的监视器)。

最佳答案

如果以下行抛出 NPE:

if (routingTable[commonBitGroups][nextNumberOfOther - 1] == null)

那么 routingTablenullroutingTable[commonBitGroups]null

<小时/>

你说数组初始化如下:

routingTable = new NodeId [32][15]; 
Arrays.fill(routingTable, null);

“好吧,这就是你的问题!”

第一行为您提供了一个包含 32 个 NodeId[] 的数组,其中元素初始化为非空值...大小为 15 的数组。(到目前为止还不错...)

第二行将所有 iroutingTable[i] 设置为 null ....哎呀!!

删除第二行。

关于java - java中简单的空检查时出现NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4871047/

相关文章:

java - 更改 Eclipse Dock 图标

java - "after() : staticinitialization(*)"的@AspectJ 语法

php - 为什么我在使用具有常量值的 bindParam 时出现无法通过引用传递参数 2 错误?

swift - 书籍(Swift for Dummies)第 4 章练习 : fatal error: unexpectedly found nil while unwrapping an Optional value

null - Shellcode: call + null

java - 为什么在从 applet 使用 RMI 时会出现 AccessControlException?

java - 使用 Capistrano 滚动部署 Java/Tomcat 应用程序

Java URI 类文件位置

java - 从远程 EJB 调用返回大文件

java - 持续轮询,还是 Java RMI?