6

我曾多次需要一些类来表示和操作条件(通常在 UI 中,因此用户通过组合不同的条件类型来构建查询,然后代码可以根据要查询的底层系统进行转换,例如 lucene 和D b)。我到处搜索一组可重用的类,我确信这必须在许多现有的地方使用(所有初学者的表达式语言),但找不到任何容易使用的东西。我最终自己编写了两次代码,但对不重用我确定存在的东西感到很遗憾。

典型需求是: - 多个运算符:and or 等​​ - 可变数量的操作数 - 组合条件以构建表达式 - 表达式的序列化 - 解析/格式化来自/到字符串的表达式

有人发现过类似的东西吗?

4

4 回答 4

1

听起来您可能正在寻找Functor(又名函数对象)。如果是这样,这个SO 问题将是相关的,wrt。选择:Commons functor(已经提到)是一种选择,但也有其他选择。

所有仿函数库都带有框架(非常简单;一元、二元谓词、这些谓词的映射功能、通过链接组合)和最常用的基本函数集。

于 2009-05-10T01:41:57.130 回答
0

这听起来像您正在寻找类似Hibernate Criteria API的东西。缺点是你被绑定到一个数据库,或者更糟糕的是一个特定的持久性框架实现。它也不能满足你的所有要求,所以我认为这不是一个好的选择......

于 2009-05-07T12:16:58.497 回答
0

您可能想查看ANTLR

于 2009-05-08T21:24:24.780 回答
0

看看Apache Commons Functor。例如UnaryPredicateUnaryAndUnaryOr等。内置实现是可序列化的,但我不知道如何从字符串解析。不过,我认为这是实现您想要的一个非常好的开始。另外,请查看基于该库的IBM 教程。

于 2009-05-10T01:30:37.343 回答