为什么返回类型的Java方法引用与Consumer接口匹配?
我对以下代码感到困惑
class LambdaTest { public static void main(String[] args) { Consumer<String> lambda1 = s -> {}; Function<String, String> lambda2 = s -> s; Consumer<String> lambda3 = LambdaTest::consume; // but s -> s doesn't work! Function<String, String> lambda4 = LambdaTest::consume; } static String consume(String s) { return s;}}
我原本期望lambda3的赋值失败,因为我的consume方法与Consumer Interface中的accept方法不匹配 - 返回类型不同,String与void。
此外,我一直认为Lambda表达式和方法引用之间存在一对一的关系,但显然并非如我的示例所示。
有人可以向我解释这里发生了什么吗?
隔江千里
相关分类