Java内部接口作为返回类型

时间:2017-10-10 17:25:23

标签: java generics method-chaining

我正在学习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::method1method1都没有返回method2类型,但为什么可以致电Parametriezed1

对于这里使用的原则的一些文档,我将非常感激。

1 个答案:

答案 0 :(得分:0)

两个接口只包含一个方法,使它们成为FunctionalInterface,这意味着具有正确签名的单个函数可以实现它们。

返回接口的方法返回带有正确签名的方法。

类本身不实现接口;要做到这一点,方法也需要具有相同的名称。可以把它想象为返回类的方法的子集,也许。

如果你问我,这是一段非常复杂的代码。