【发布时间】:2018-10-26 07:45:18
【问题描述】:
我刚刚学习java 8的方法引用概念。我觉得奇怪的是一个方法引用被分配给接口变量而不实现接口的例子,而调用接口的抽象方法是调用被引用的方法。
interface Sayable {
void say();
}
public class InstanceMethodReference {
public void saySomething() {
System.out.println("Hello, this is non-static method.");
}
public static void main(String[] args) {
InstanceMethodReference methodReference = new InstanceMethodReference();
Sayable sayable = methodReference::saySomething;
sayable.say();
}
}
上面的代码打印了 saySomething 方法的消息,我试图了解这里的方法和对象的内存分配是如何完成的,以及总体上它是如何工作的。
任何帮助表示赞赏。
【问题讨论】:
-
请从方法名称“saySomething”中删除“say”,看看它是否仍然有效。我猜它只是考虑将“say”作为您要初始化的引用的方法名称的前缀。
-
但是这是否可以将任何方法分配给任何接口变量然后再次调用接口的抽象方法,这对我来说似乎很混乱。
-
@MuhmmadAbubakarIkram 没关系,仍然有效!
-
那么返回类型的匹配就是条件。您是否尝试过更改返回类型?我想那它不会工作
标签: java object interface functional-programming