普通终端操作是否不适用于Stream<;java.lang.Byte>;?

普通终端操作是否不适用于Stream<;java.lang.Byte>;?,java,byte,java-8,java-stream,Java,Byte,Java 8,Java Stream,我有一个简单的流,用于处理字节: List<Byte> byteList = Arrays.stream(new Byte[]{0x1, 0x2, 0x3, 0x4}) .map(b -> b >> 1) .collect(Collectors.toList()); 错误:不兼容的类型:java.util.Optional无法转换为java.util.Optional 我没有找到任何说明流不支持字节的文档。任何指针?b>>1返回一个

我有一个简单的
,用于处理字节:

List<Byte> byteList = Arrays.stream(new Byte[]{0x1, 0x2, 0x3, 0x4})
        .map(b -> b >> 1)
        .collect(Collectors.toList());
错误:不兼容的类型:
java.util.Optional
无法转换为
java.util.Optional


我没有找到任何说明流不支持
字节的文档。任何指针?

b>>1
返回一个不能自动转换为字节的整数。您只需添加一个强制类型:

.map(b -> (byte) (b >> 1))

谢谢出于某种原因,Intellij IDEA一直告诉我映射是一个从字节到字节的操作…确实如此,但是您的实现返回了一个INT。尽管如此,如果您现在是这样,您也可以使用
IntStream.of(0x1,0x2,0x3,0x4)。mapToObj(b-⁠> (字节)(b>>1)).collect(collector.toList())因为没有真正的理由将
字节
对象作为源…
.map(b -> (byte) (b >> 1))