可重用的条件/表达类

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

典型的需求是: – 几个运算符:和/或 – 可变数量的操作数 – 组合条件来构建表达式 – 序列化表达式 – 从/到字符串解析/格式化表达式

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

看看Apache Commons Functor 。 例如UnaryPredicate , UnaryAnd , UnaryOr等。内置的实现是Serializable,但我不知道从字符串解析。 不过,我认为这是你想要的一个非常好的开始。 另外,请看一下基于库的IBM教程 。

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

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

这听起来像是在寻找像Hibernate Criteria API这样的东西。 缺点是您与数据库绑定甚至更糟糕的是特定的持久性框架实现。 它也没有涵盖你们所有的要求,所以我认为这不是一个好的选择……

您可能想要查看ANTLR 。