将 int[][] 转换为 boolean[][]:java.lang.ArrayStoreException

Converting int[][] to boolean[][]: java.lang.ArrayStoreException

布局为 int[][]

boolean[][] booleanTileMap = Arrays
      .stream(layout)
      .map((row) -> 
        Arrays
          .stream(row)
          .mapToObj((value) -> value != 0)
          .toArray()
      )
      .toArray(boolean[][]::new);

完整错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayStoreException: [Ljava.lang.Object;
        at java.base/java.util.stream.Nodes$FixedNodeBuilder.accept(Nodes.java:1222)
        at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:197)
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
        at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
        at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)

我做错了什么? IDE 没有突出显示任何错误或警告。

从 boolean 更改为 Boolean,并将第一个 toArray() 更改为 toArray(Boolean[]::new)

Boolean[][] booleanTileMap = Arrays
      .stream(layout)
      .map((row) -> 
        Arrays
          .stream(row)
          .mapToObj((value) -> value != 0)
          .toArray(Boolean[]::new) // This was just .toArary() before
      )
      .toArray(Boolean[][]::new);