我对以下代码感到困惑
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;}
}
Run Code Online (Sandbox Code Playgroud)
我原本期望lambda3的赋值失败,因为我的consume方法与Consumer Interface中的accept方法不匹配 - 返回类型不同,String与void.
此外,我一直认为Lambda表达式和方法引用之间存在一对一的关系,但显然并非如我的示例所示.
有人可以向我解释这里发生了什么吗?
java-8 ×1