【问题标题】:Lightweight expressions parser in Java 1.6Java 1.6 中的轻量级表达式解析器
【发布时间】:2015-01-26 18:55:07
【问题描述】:

我正在寻找一个轻量级库,它能够解析和评估 java 对象上的琐碎条件,以便在对象上实现字符串过滤器

示例: 解释如下字符串: myObject.intField > 0 && myObject.booleanField 以 myObject 作为参数。

像 Janino 之类的东西: http://docs.codehaus.org/plugins/servlet/mobile#content/view/17273 但更面向 Bean(无需使用 getter)

可以编写我自己的解析器,但最好避免重新实现轮子。

【问题讨论】:

  • Java 从 Java 6 开始就有一个内置的脚本 API,请参阅包 javax.script 的 API 文档。内置对 JavaScript 的支持,但可以使用其他脚本语言对其进行扩展。
  • 看看 EL(表达式语言)有几个实现 - 例如JUEL.
  • Java 8 中的 lambdas 怎么样?
  • javax.script 需要一个 ScriptEngine 但默认引擎在平台之间可能不同(JVM 版本或 OS Windows、*ix、OSX),所以我需要为像 Rhino for JS 这样的引擎添加一个依赖项, Groovy 或其他任何东西。我不需要功能齐全的库,只需要一个简单的表达式解析器和求值器。
  • 或者我错了。无论操作系统和 Java 版本(1.6+)如何,“Javascript”是否始终作为 ScriptEngine 默认提供?

标签: java expression janino


【解决方案1】:

Java(至少 JavaEE 6)有一个 Expression Language 内置。

【讨论】:

  • 使用 EL 真的很有趣,但现在我没有找到从我的 Java 代码(没有 JSP,没有 JSF)中执行它的方法。
猜你喜欢
  • 2010-09-23
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
相关资源
最近更新 更多