我可以做转换的代码是这样的:转换一个对象[]布尔值的布尔[]使用流
Object[] array = (Object[]) message.get(key);
boolean[] result = new boolean[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = (boolean) array[i];
}
但是,我认为这是可以做到使用Java 8相同的转换流。我开始编写这样的代码:
boolean[] = Arrays.stream(array)
.map(Boolean.class::cast)
.map(Boolean::booleanValue)
.toArray()
但是这段代码不起作用。编译器说
incompatible types: java.lang.Object[] cannot be converted to boolean[]
我想了解代码的问题是什么。我认为map(Boolean::booleanValue)
会返回一个我可以通过toArray
收集的布尔值流。
这是行不通的,因为'Object []'和'boolean []'是Java中不可转换的类型,所以实际上'Object [] = boolean []'也不起作用。 – Jagger
'.toArray()'这里是通用的,所以'Object []'是最好的。你可以编写你自己的收集器来返回'boolean []'。 –
@SashaSalauyou然而你可以使用'toArray(IntFunction generator)'来返回一个类型数组。我加了一个答案作为例子。 –