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()
中自己完成了,它将其转换为 Byte
s。
第二,字节没有这样的方法。它存在于整数、双精度数中,但不存在于字节中。见
方法boxed()
仅针对某些原始类型(IntStream
、DoubleStream
和LongStream
)的流设计,将流的每个原始值装箱到相应的包装器 class(分别为 Integer
、Double
和 Long
)。
表达式 Arrays.stream(toObjects(data))
returns a Stream<Byte>
自 .
以来已经装箱
对于您想做的事情,您可以直接使用 Arrays.asList(toObjects(data))
,因为 toObjects(data)
是 Byte[]
类型。
或者,如果您真的想使用 Streams,那么 Stream.of(toObjects(data)).collect(Collectors.toList())
应该可以解决问题。
我正在尝试将字节数组转换为 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 typeStream<Byte>
.
知道为什么我会收到此错误消息以及如何避免此问题吗?
首先,您不需要那里的 boxed()
方法 - 您已经在 toObjects()
中自己完成了,它将其转换为 Byte
s。
第二,字节没有这样的方法。它存在于整数、双精度数中,但不存在于字节中。见
方法boxed()
仅针对某些原始类型(IntStream
、DoubleStream
和LongStream
)的流设计,将流的每个原始值装箱到相应的包装器 class(分别为 Integer
、Double
和 Long
)。
表达式 Arrays.stream(toObjects(data))
returns a Stream<Byte>
自
对于您想做的事情,您可以直接使用 Arrays.asList(toObjects(data))
,因为 toObjects(data)
是 Byte[]
类型。
或者,如果您真的想使用 Streams,那么 Stream.of(toObjects(data)).collect(Collectors.toList())
应该可以解决问题。