首页 > 解决方案 > Java 8 方法引用默认方法实现

问题描述

 interface HelloWorld {
    String hello(String s);
}
public static void main(String[] args) {
        HelloWorld h = String::new;
        System.out.println(h.hello("dasdasdadasd"));
}

当我执行上述方法时,它返回我在参数中传递的值dasdasdadasd 执行字符串类的哪个方法,或者是否有 java 在运行时提供的任何默认实现,或者默认情况下它调用供应商.get() 方法?

标签: java

解决方案


hpublic String(String original)被分配了对该类的构造函数的方法引用String。这是唯一与接口String hello(String s)方法签名匹配的构造函数。HelloWorld

因此h.hello("dasdasdadasd")创建一个String值等于的新实例"dasdasdadasd"并返回该实例。

HelloWorld h = String::new;

相当于:

HelloWorld h = s -> new String(s);

推荐阅读