将 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);
布局为 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);