我对在 Java 中使用函子(函数对象)感兴趣。通过快速谷歌搜索,我找到了这 3 个软件包:
- Java 泛型算法:http://jga.sourceforge.net/ http://jga.sourceforge.net/
- 公共函子:http://commons.apache.org/sandbox/functor/ http://commons.apache.org/sandbox/functor/
- Mango: http://www.jezuk.co.uk/cgi-bin/view/mango http://www.jezuk.co.uk/cgi-bin/view/mango
在 3 中,JGA 看起来可能拥有最好的设计。但我怀疑这里实际使用过一个或多个包的其他人可能能够提供有关这些(也许还有其他)函子包的优缺点的更多见解。
Mango
提供 0、1 和 2 个参数函数的接口。使用 Java 泛型。用于处理函数的多种算法。
JGA
提供 0、1、2 和任意数量的参数函数的类。域对象是这些对象的子类。使用 Java 泛型。广泛的算法。包括 JFXG(Java Functor eXpression Grammar) - 一种解析语言,旨在轻松创建任意复杂的函子。提供多种处理函数的算法。
Apache Commons 函子
提供 0、1 和 2 个参数函数以及 0、1 和 2 个参数过程(不返回值)的接口。使用 Java 泛型。良好的算法范围。
Google Guava(曾是 Google 的收藏品)
为单参数函数提供 Function 和 Predicate 接口。使用 Java 泛型。仅提供组合函数的compose方法。非常基本。
功能性J
为 0、1、2 和任意数量的参数函数提供接口和类。使用 Java 泛型。可以通过提供的函数反射类将现有方法转换为函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)