Java 内部接口为 return 类型
Java inner interfaces as return types
我正在学习 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
- 为什么在
method1
和 method2
returns Parametriezed1
类型都没有的情况下调用 this::method1
是可以的?
如果能提供一些有关此处所用原则的文档,我将不胜感激。
两个接口只包含一个方法,使它们成为 FunctionalInterface
,这意味着具有正确签名的单个函数可以实现它们。
方法 return 使用正确的签名调用接口 return 方法。
class本身不实现接口;为此,这些方法也需要具有相同的名称。可以将其视为 returning class 方法的一个子集。
如果你问我,这是一段非常复杂的代码。
我正在学习 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
- 为什么在
method1
和method2
returnsParametriezed1
类型都没有的情况下调用this::method1
是可以的?
如果能提供一些有关此处所用原则的文档,我将不胜感激。
两个接口只包含一个方法,使它们成为 FunctionalInterface
,这意味着具有正确签名的单个函数可以实现它们。
方法 return 使用正确的签名调用接口 return 方法。
class本身不实现接口;为此,这些方法也需要具有相同的名称。可以将其视为 returning class 方法的一个子集。
如果你问我,这是一段非常复杂的代码。