【发布时间】:2020-03-27 21:33:25
【问题描述】:
我开始使用流并面临以下问题:
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(10);
al.add(20);
al.add(30);
al.stream().forEach(System.out::println); // This works
al.stream().map(System.out::println); // This fails with error as "Incompatible types: expected not void but compile-time declaration for method reference has void return type"
有人可以解释一下吗?
【问题讨论】:
-
map采用Function将流的元素类型转换为其他类型。void-returningprintln能做到吗? -
map需要一个函数。System.out.println()是消费者而不是函数 -
map返回一个值。所以它接受一个返回值的函数。 System.out.println() 不返回任何内容。 -
或者,用更简单的话来说,这是因为
map是与forEach不同的方法,目的完全不同,没有理由像forEach那样行事。
标签: java java-stream