最佳 Java Functor 库:JGA、commons functor、mango,还是...?

2024-05-21

我对在 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(使用前将#替换为@)

最佳 Java Functor 库:JGA、commons functor、mango,还是...? 的相关文章

随机推荐

  • 理想的 PHP 会话大小?

    我有一个 PHP 表单 抵押应用程序 大约有 400 个字段 该网站的流量会很低 对于进入 MySQL 数据库的 400 个字段 理想的会话大小是多少 In php ini我要设置什么 我应该设置我缺少的任何内容吗 会话的大小没有限制 但
  • 如何在 Laravel 5 中对合并集合进行分页?

    我正在创建一个包含两种类型的对象的流 BluePerson 和 RedPerson 为了创建流 我获取所有这两个对象 然后将它们合并到一个集合中 这样做之后 我需要对它们进行分页 但是分页似乎是针对雄辩的模型和数据库查询 而不是集合 我见过
  • Android MediaPlayer:视频查找导致 onSeekComplete 被调用两次

    我在这里做错了什么 我设置了 onSeekCompleteListener 我准备了一部电影 我进行了一次搜索 立即调用 onSeekComplete 然后延迟一段时间后我播放电影 然后再次调用onSeekComplete 怎么又来了 这是
  • 使用 AES 解密时输入数据不是完整的块

    我正在尝试加密来自 oracle 的数据 然后使用 C 解密它 到目前为止 我设法编写了一个在 C 和 Oracle 中加密数据的代码 并且得到了匹配的结果 我试图用 C 解密数据 但收到错误 输入数据不是一个完整的块 甲骨文加密 SELE
  • 更新:随机将行添加到矩阵中,但遵循严格的规则

    以下是一个更大的矩阵的一部分 0 1 0000 1 0000 77 0000 100 0000 0 0 2500 0 1 0000 1 0000 72 0000 100 0000 0 2500 0 2500 0 1 0000 1 0000
  • ipad safari 中的高分辨率 PNG 文件

    我有一些 asp net 站点 显示从高分辨率 tiff 文件转换而来的 png 图像 图像通过简单的 img 标签显示 问题是 wneh png 的分辨率很大 它在 ipad 的 safari 浏览器中无法正确显示 但大多数 png 文件
  • 使用 OpenSL ES Android 同时播放多种音效

    我正在使用 OpenSL ES 在我的项目中播放音乐和声音 我用过原生音频样本作为开始 它可以很好地再现背景音乐和单个声音 但是当我尝试同时再现两个或多个声音时 声音不会同时再现 因为当播放所有先前的缓冲区时 声音缓冲区会排队等待播放 然后
  • 如何排除 XSD 中的根元素?

    我在 XSD 文件中定义了几个元素 稍后在文档中将它们用作参考 我确实希望这些 引用 元素中的任何一个都能构成一个有效的 xml 文件 例如我有
  • 如何对私有方法进行单元测试?

    我正在构建一个类库 它将有一些公共和私有方法 我希望能够对私有方法进行单元测试 主要是在开发时 但它也可能对未来的重构有用 这样做的正确方法是什么 如果您想对私有方法进行单元测试 则可能会出现问题 单元测试 一般来说 旨在测试类的接口 即其
  • 如何确定 OS X 中的文件编码?

    我正在尝试将一些 UTF 8 字符输入到 LaTeX 文件中TextMate http en wikipedia org wiki TextMate 它说它的默认编码是UTF 8 但LaTeX似乎不理解它们 Running cat my f
  • MySQL查询,删除所有空格

    我有一个不寻常的查询 这让我现在陷入困境 表字段有 id bigint 20 name varchar 255 desc text 有许多记录具有相同的名称和 desc 但 desc 的单词之间有一些额外的空格 like 1 t1 hell
  • 如何为所有 API 端点全局设置 http.ResponseWriter Content-Type 标头?

    我是 Go 新手 现在正在用它构建一个简单的 API package main import encoding json fmt github com gorilla mux github com gorilla handlers log
  • 当用户尝试打开新实例时返回到已打开的应用程序

    这是我有一段时间想不通的问题 防止第二个实例很简单并且有很多方法 但是恢复已经运行的进程则不然 我想 最小化 撤消最小化并将正在运行的实例置于最前面 在其他窗口后面 将应用程序置于最前面 我使用的语言是 VB NET 和 C 我发现这段代码
  • JavaScript 中的“REPL”是什么? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我看到了创建 REPL 的参考 什么
  • Android 支持库是根据什么许可证发布的?

    我一直在阅读文档 http developer android com tools support library index html对于 Android 支持库 虽然它明确表示您应该将其包含在您的 Android 项目中 但它没有提及该
  • 如何将数据帧转换为 JSON 并使用密钥写入 kafka 主题

    我正在尝试以 JSON 格式向 kafka 写入一个数据帧 并在 Scala 中向该数据帧添加一个键 我目前正在使用 kafka spark 中的这个示例 df selectExpr CAST key AS STRING CAST valu
  • 如何从通讯录 ios 以编程方式编辑电话号码值

    我正在尝试在 iOS 中以编程方式替换特定联系人的特定电话号码 获取联系人表单地址簿 我不知道为什么我无法保存新的电话号码并刷新地址簿以显示更改 我正在这样做 BOOL changeContactPhoneNumber NSString p
  • AppCompatSeekBar左右内边距去除?

  • Firefox 和 Safari 中的 MouseEvent.path 等效项

    我正在使用 Polymer 1 0 当点击 Chrome 中的按钮时MouseEvent被生成 这MouseEvent对象有一个path属性是单击按钮的父元素的有序数组 然而 在 Firefox 和 Safari 中 click生成的没有p
  • 最佳 Java Functor 库:JGA、commons functor、mango,还是...?

    我对在 Java 中使用函子 函数对象 感兴趣 通过快速谷歌搜索 我找到了这 3 个软件包 Java 泛型算法 http jga sourceforge net http jga sourceforge net 公共函子 http comm