何时使用函数式接口与函数<T, Y>

When to use Functional Interface vs Function<T, Y>

我正在使用 Java 11,我们有两种方法将函数作为参数传递。

现在我找不到关于何时使用哪一个的任何信息。我可以想象,当我们不想传递任何参数或有超过 1 个参数时,我们可以在 Function<T,Y> 上使用通用功能接口。此外,当我们不想 return 方法中的任何内容时。

但是假设我们有一个用例,我们想要传入 1 个参数并接收 1 个值作为输出。在这种情况下,是否有关于我们应该选择什么以及为什么选择的建议?还是我们可以根据代码库的一致性来选择我们喜欢的。

让我引用 Effective Java 的第 44 条“赞成使用标准功能接口”:

If one of the standard functional interfaces does the job, you should generally use it in preference to a purpose-built functional interface. This will make your API easier to learn, by reducing its conceptual surface area, and will provide significant interoperability benefits, as many of the standard functional interfaces provide useful default methods. The Predicate interface, for instance, provides methods to combine predicates.

Function<T,Y> 是一个 @FunctionalInterfaceFunction<T,Y> 是一个内置函数式接口,带有注解 @FunctionalInterfaceFunction<T,Y> 满足您的需求,不应创建自定义 @FunctionalInterface.