相关疑难解决方法(0)

为什么返回类型的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;}
}
Run Code Online (Sandbox Code Playgroud)

我原本期望lambda3的赋值失败,因为我的consume方法与Consumer Interface中的accept方法不匹配 - 返回类型不同,String与void.

此外,我一直认为Lambda表达式和方法引用之间存在一对一的关系,但显然并非如我的示例所示.

有人可以向我解释这里发生了什么吗?

java-8

19
推荐指数
2
解决办法
3056
查看次数

标签 统计

java-8 ×1