为什么可以使用返回值的lambda初始化java.util.function.Consumer?

时间:2017-09-07 19:34:10

标签: java-8

虽然功能界面Consumer有抽象方法void accept(T t);,但可以通过以下方式初始化它:

Consumer<String> stringConsumer = s -> s.length();
// or 
Consumer<String> stringConsumer = String::length;

...其中String.length()返回int。在这种情况下,返回类型不匹配。为什么允许这样做?

P.S。编译器不允许与使用Function的Consumer一起操作。以下行不会编译。

System.out.println(stringConsumer.accept("Hello!"));

0 个答案:

没有答案