如何在 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"
。
如何从 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"
。