JAVA - 表达式解析和评估库

dud*_*mar 7 java expression

我正在寻找一个JAVA库来解析和评估表达式.我搜索并尝试了一些像Apache的JEXL和Jeval这样的库,但它们并不是我需要的.

我的要求:

  1. 支持所有值类型(即int,double,boolean,String等)
  2. 支持所有已知的数学和逻辑运算符(+, - ,*,<,<=等)
  3. 支持变量(没有任何特殊符号 - 例如在Jeval变量中应该写成#{a} - 对我来说不够好)
  4. 支持自定义功能 - 具有类型强制和验证功能

有什么建议?

los*_*ost 6

试试Janino.它是一个运行时内存编译器,可用作表达式求值程序.也许这对你来说是对的.


Luk*_*der 0

如果您没有找到实际的 Java 表达式求值库,可以选择以下几个解决方案:

  • 使用 XPath 评估您的表达式。
    • 优点:XPath 知道逻辑运算符,并且您可以使用 Xalan 的扩展来实现变量和自定义函数
    • 缺点:XPath 的类型比 Java 少
  • 使用 JavaScript 评估您的表达式。
    • 优点:Javascript 非常灵活,当您的要求严格时仍然适用。您也可以使用 Javascript 实现变量和自定义函数
    • 缺点:Javascript 的类型比 Java 少
  • 使用 JSP 的表达式语言(例如使用JUEL)评估您的表达式