如何从Stream创建boolean数组?代码出现类型转换错误的原因
错误原因分析
核心问题点:
- 调用
map(e -> e.isAvailable())时,Java会自动把基本类型boolean装箱成包装类型Boolean对象,此时stream中的元素类型是Boolean而非原始的boolean。 - 无参的
toArray()方法默认返回Object[]数组,数组里存储的是Boolean对象,而你试图将这个Object[]直接赋值给boolean[]类型变量——这两种数组属于完全不同的类型体系,无法强制转换,因此抛出类型转换错误。
正确写法参考
要生成boolean[]数组,应该使用mapToBoolean()替代map(),它会直接处理基本类型boolean,避免装箱,再配合toArray()就能得到目标类型数组:
List<Class1> class1List; boolean[] isAvailableArray = class1List.stream() .mapToBoolean(Class1::isAvailable) .toArray();
内容的提问来源于stack exchange,提问作者user3809938
相关产品推荐
相关产品推荐

