Java 8 条流:方法 boxed() 未定义流类型 <Byte>

Java 8 Streams : The method boxed() is undefined for the type Stream<Byte>

我正在尝试将字节数组转换为 LinkedList<Byte>:

//data is of type byte[]
List<Byte> list = Arrays.stream(toObjects(data)).boxed().collect(Collectors.toList());

Byte[] toObjects(byte[] bytesPrim) {
    Byte[] bytes = new Byte[bytesPrim.length];
    Arrays.setAll(bytes, n -> bytesPrim[n]);

    return bytes;
}

第一行引发一条错误消息:

The method boxed() is undefined for the type Stream<Byte>.

知道为什么我会收到此错误消息以及如何避免此问题吗?

首先,您不需要那里的 boxed() 方法 - 您已经在 toObjects() 中自己完成了,它将其转换为 Bytes。

第二,字节没有这样的方法。它存在于整数、双精度数中,但不存在于字节中。见

方法boxed()仅针对某些原始类型(IntStreamDoubleStreamLongStream)的流设计,将流的每个原始值装箱到相应的包装器 class(分别为 IntegerDoubleLong)。

表达式 Arrays.stream(toObjects(data)) returns a Stream<Byte>.

以来已经装箱

对于您想做的事情,您可以直接使用 Arrays.asList(toObjects(data)),因为 toObjects(data)Byte[] 类型。 或者,如果您真的想使用 Streams,那么 Stream.of(toObjects(data)).collect(Collectors.toList()) 应该可以解决问题。