【发布时间】:2019-05-01 06:55:26
【问题描述】:
这是我在研究函数式接口概念时遇到的一个示例。
interface Sayable{
void say();
}
public class MethodReference {
public static void saySomething(){
System.out.println("Hello, this is static method.");
}
public static void main(String[] args) {
// Referring static method
Sayable sayable = MethodReference::saySomething;
// Calling interface method
sayable.say();
}
}
这是打印“你好,这是静态方法”。在运行时输出。我的问题是当我们调用 say() 方法时它是如何打印输出的(未实现)
【问题讨论】:
-
它已实现。
MethodReference::saySomething是 Sayable 的一个实例,其say()方法由saySomething方法实现。 docs.oracle.com/javase/tutorial/java/javaOO/… -
我发誓我在 2014 年第一次看到这个时,我和你现在有同样的感觉;但是您在阅读文档时习惯了它
-
您只需要相信 Java 的话。
Sayable将不带参数且不返回值的函数定义为类型,因为 Java 是这么说的。因为这就是MethodReference::saySomething,所以您可以将其分配给该类型的引用。然后就是你如何处理这样的参考。有一个任意的方法名称来调用该函数真的很奇怪。你只需要接受它。 -
@JBNizet 和所有感谢将接受给定的答案
标签: java java-8 functional-interface