我有代码:
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});
没有这样做。为什么呢?
答案 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();