为什么在使用toString
或Arrays.stream()
时无法解析方法IntStream
:
int row[] = ...
Arrays.stream(row)
.map(Arrays::toString)
.forEach(System.out::println);
但是,另一方面,当我使用Stream.of()
时可以解决它:
int row[] = ...
Stream.of(row)
.map(Arrays::toString)
.forEach(System.out::println);
答案 0 :(得分:5)
Stream.of(row)
将返回Stream<int[]>
,其单个元素是row
数组。 Arrays
包含一个接受toString
的静态方法int[]
,因此您的第二个代码段会通过编译。
另一方面,Arrays.stream(row)
(以及IntStream.of(row)
)会返回IntStream
,其元素为int
。 toString
类中没有采用Arrays
参数的int
方法。
您可以使用Integer
的{{1}} static
方法代替:
toString
请注意,在将基元Arrays.stream(row)
.mapToObj(Integer::toString)
.forEach(System.out::println);
映射到引用类型时,应该调用mapToObj
而不是map
。