为什么具有返回类型的 Java 方法引用与使用者接口匹配?
我对以下代码感到困惑
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的分配会失败,因为我的消费方法与消费者接口中的接受方法不匹配 - 返回类型是不同的,字符串与无效。
此外,我一直认为 Lambda 表达式和方法引用之间存在一对一的关系,但正如我的示例所示,情况显然并非如此。
有人可以向我解释这里发生了什么吗?