java - 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() 方法?
解决方案
h
public String(String original)
被分配了对该类的构造函数的方法引用String
。这是唯一与接口String hello(String s)
方法签名匹配的构造函数。HelloWorld
因此h.hello("dasdasdadasd")
创建一个String
值等于的新实例"dasdasdadasd"
并返回该实例。
HelloWorld h = String::new;
相当于:
HelloWorld h = s -> new String(s);
推荐阅读
- java - 扫描文本文件时出现 NetBeans 错误
- dart - Dart 中的 this[x] 等价于什么?
- .htaccess - Apache 重定向指令不作为最终规则
- ios - 无法以编程方式在 TableView 中自动滚动到特定部分
- amazon-web-services - AWS EventBridge 规则触发两次
- php - .htaccess url 重写一夜之间失败
- karate - 使用 0.9.5.RC4 的 Karate.toMap() 适用于场景,但不适用于场景大纲
- firebase - 在 Firestore 规则中引用变量
- python - 500 错误:“timeline_id”列中的空值违反非空约束
- r - 以有序格式将 2 列粘贴到新变量