为什么这一行会产生一个空指针?爪哇15

M. *_*Lee -3 java

下面两行:

   Boolean visitedAlphabet[] = new Boolean[26];
   Arrays.stream(visitedAlphabet).anyMatch(e -> e != true);
Run Code Online (Sandbox Code Playgroud)

产生一个空指针,具体是第二行:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because "<parameter1>" is null
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么会发生这种情况吗?

mik*_*keb 5

编辑 - 添加约翰·博林格的优秀评论片段 -

因为e是 null 并且运行时正在尝试将其“拆箱”为原始boolean

您可以执行(e != null && e != true)!Boolean.TRUE.equals(e)或 初始化您的数组:

初始化一个数组:

Java中如何初始化数组?

装箱和拆箱:

https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html

  • 或者 `!Boolean.TRUE.equals(e)`。这自然会处理空值。 (5认同)