我正在学习Java,最近遇到了以下正常工作的代码,但我不明白为什么:
public class ExecutionChain<Result> {
Parametriezed1<Result> classMethod1() {
return this::method1;
}
Parametriezed2<Result> method1() {
return this::method2;
}
Result method2(Result result) {
return result;
}
interface Parametriezed1<Result> {
Parametriezed2 method1();
}
interface Parametriezed2<Result> {
Result method2(Result result);
}
}
有人可以解释一下:
method1
似乎在没有Parametriezed2 method1()
实施ExecutionChain
的情况下覆盖Parametriezed1
this::method1
和method1
都没有返回method2
类型,但为什么可以致电Parametriezed1
?对于这里使用的原则的一些文档,我将非常感激。
答案 0 :(得分:0)
两个接口只包含一个方法,使它们成为FunctionalInterface
,这意味着具有正确签名的单个函数可以实现它们。
返回接口的方法返回带有正确签名的方法。
类本身不实现接口;要做到这一点,方法也需要具有相同的名称。可以把它想象为返回类的方法的子集,也许。
如果你问我,这是一段非常复杂的代码。