在 Java 8 中,新包java.util.function包含许多函数式接口。该包的文档(http://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)多次引用“函数形状”:
- 有几种基本的函数形状,包括 Function(从 T 到 R 的一元函数)、Consumer(从 T 到 void 的一元函数)、Predicate(从 T 到布尔的一元函数)和 Supplier(从 R 的一元函数)。
- 函数形状具有基于它们最常用的方式的自然属性。基本形状可以通过一个元数前缀来修改,以指示不同的元数,例如 BiFunction(从 T 和 U 到 R 的二元函数)。
- 还有其他派生函数形状可以扩展基本函数形状,包括 UnaryOperator(扩展函数)和 BinaryOperator(扩展 BiFunction)。
我以前从未听说过“函数形状”这个术语,除了上面的文档之外,我几乎无法在任何地方找到对它的引用,但由于那是 Oracle 关于函数接口的正式文档,我想了解它。
任何人都可以提供“功能形状”的定义,并发明一个例子吗?它是计算机科学中的通用术语,还是仅与 Java 8 相关?函数形状与函数描述符(例如Predicate<T> 接口的(T) -> boolean )有何关系?
更新 Brian Goetz 下面的两条评论回答了我在这篇文章中提出的问题。