如何在 Nashorn 引擎中创建和 return Predicate<T> java 8

How to create and return Predicate<T> from withing Nashorn engine java 8

如何从 java 8 中的 ScriptEngine 创建谓词并将其 return 到 java 程序?

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

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

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

我在想这样的事情:

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);
  };
}

这应该有效:

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

此外,我认为在您的原文 post 中您不想引用 "value"