我在某些情况下需要一些类来表示和操作条件(通常在UI中,因此用户通过组合不同的条件类型来构建查询,然后代码可以根据要查询的基础系统对其进行转换,例如lucene和db)。我搜遍了一组可重复使用的类,我确信这必须在许多现有的地方使用(所有表达语言都是初学者),但找不到任何容易使用的东西。我自己最终编写了两次编码,但是对于不重复使用我确定存在的东西感到很难过。
典型需求是: - 几个运营商:和/或等 - 可变数量的操作数 - 结合条件来构建表达式 - 序列化表达式 - 从/到字符串
解析/格式化表达式有人找到了类似的东西吗?
答案 0 :(得分:1)
听起来你可能正在寻找Functors(又称函数对象)。 如果是这样,这SO question将是相关的,wrt。选择:Commons functor(已经提到)是另一种选择,但也有其他选择。
所有函子库都带有框架(非常简单;一元,二元谓词,映射功能,通过链接组合)和最常用的基本函数集。
答案 1 :(得分:0)
这听起来像是在找Hibernate Criteria API之类的东西。缺点是您与数据库绑定甚至更糟糕的是特定的持久性框架实现。它也没有满足你们的所有要求,所以我认为这不是一个好的选择......
答案 2 :(得分:0)
您可以查看ANTLR。
答案 3 :(得分:0)
看看Apache Commons Functor。例如。 UnaryPredicate,UnaryAnd,UnaryOr等。内置实现是Serializable,但我不知道从字符串解析。不过,我认为这是你想要的一个非常好的开始。另外,请根据库查看this IBM tutorial。