0

如何在 java 8 中从 ScriptEngine 创建谓词并将其返回给 java 程序?

谓词条件是运算符和它们的比较值,数量很多。所以我想从 javaScript Engine 中获取谓词,如下所示:

public Predicate<Object> getPredicate(String operator, String value) {
return Predicate<Object> engine.eval("(i)-> i" + operator + value);
}

这里的运算符可以是 >=、<=、>、< 等。这只是实际问题的一个更简单的版本。我如何从 nashorn 创建谓词,之后我就可以开车了。

4

2 回答 2

1

我想这样的事情:

public Predicate<Object> getPredicate(final String operator, final String value) {
  return i -> {
    Bindings bindings = new Bindings();
    bin.put("i", i);
    bin.put("value", value);
    return engine.eval("i " + operator + " value", bindings);
  };
}
于 2016-07-08T12:07:18.637 回答
0

这应该有效:

engine.eval("new java.util.function.Predicate(function(i) { return i" + operator + value + ";})");

另外,我认为在您的原始帖子中您不想引用"value".

于 2016-07-08T18:00:04.137 回答