interface HelloWorld {
String hello(String s);
}
public static void main(String[] args) {
HelloWorld h = String::new;
System.out.println(h.hello("dasdasdadasd"));
}
Run Code Online (Sandbox Code Playgroud)
当我执行上面的方法时,它返回我在参数dasdasdadasd中传递的值. 执行字符串类的哪个方法,或者是java在运行时提供的默认实现,或者默认情况下它调用supplier.get()方法?
h被赋予了public String(String original)对String类的构造函数的方法引用.这是唯一与String hello(String s)您的HelloWorld界面方法的签名匹配的构造函数.
因此,h.hello("dasdasdadasd")创建一个String值等于的新实例"dasdasdadasd"并返回该实例.
HelloWorld h = String::new;
Run Code Online (Sandbox Code Playgroud)
相当于:
HelloWorld h = s -> new String(s);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |