虽然功能界面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!"));