整数流

时间:2017-01-28 21:41:04

标签: java-8

我有代码:

int[] values = { 1, 4, 9, 16 };
Stream<Integer> ints = Stream.of(values);

这给了我编译错误。但是:

int[] values = { 1, 4, 9, 16 };
Stream<Integer> ints = Stream.of(new Integer[] {1, 4, 9, 16});

没有这样做。为什么呢?

3 个答案:

答案 0 :(得分:12)

在第一个示例中,您将一个基元数组int传递给Stream#of,它可以接受一个对象或一个对象数组。基元不是对象。

在第二个例子中,它编译为你传递Integer数组。

您可以使用接受IntStream#of数组的int

答案 1 :(得分:4)

因为int[]Integer[]是不同的类型。第一个是基元数组,第二个是类型为Integer的对象数组。

您可以使用IntStream.of(int[])Stream.of(Integer[])

答案 2 :(得分:4)

有点不相关,但更正确的方式是:

Arrays.stream(values).boxed();