Javascript 从字符串转换为lambda

Javascript 从字符串转换为lambda,javascript,java,lambda,scriptengine,Javascript,Java,Lambda,Scriptengine,我正在尝试使用ScriptEngine将字符串转换为lambda函数以进行输入。这是我到目前为止所说的,但我只经历过错误: ScripEngine engine = new ScriptEngineManager().getEngineByName("javascript"); someFunctionThatTakesInALambdaEquation((Function<Double, Double>)engine.eval("x -> x + 3")); ScripP

我正在尝试使用ScriptEngine将字符串转换为lambda函数以进行输入。这是我到目前为止所说的,但我只经历过错误:

ScripEngine engine = new ScriptEngineManager().getEngineByName("javascript");
someFunctionThatTakesInALambdaEquation((Function<Double, Double>)engine.eval("x -> x + 3")); 
ScripPengine engine=new ScriptEngineManager().getEngineByName(“javascript”);
采用AlambDaequation((函数)engine.eval(“x->x+3”))的某些函数;

lambda表达式的JavaScript语法是
x=>x+3
,或者等效地,您可以将其编写为匿名函数
函数(x){return x+3;}
。 请注意,对于lambda表达式
x->x+3
,它与Java的语法略有不同

所以我试着
engine.eval(“x=>x+3”),但从脚本引擎获得异常。我不明白为什么。
但是

您可以获得一个JavaScript函数对象。然后需要将其转换为Java函数对象(也称为lambda表达式)


你可以在你的问题中添加
javascript
标记。这很好用。“x=>x+3”语法也不适合我。不知道为什么…“x=>x+3”似乎很好用。y=eval(“x=>x+3”);y(3);//打印出6
AbstractJSObject obj = (AbstractJSObject) engine.eval("function(x) { return x + 3; }");
Function<Double, Double> f = x -> (Double) obj.call(null, x);
someFunctionThatTakesInALambdaExpression(f);