小编Nit*_*esh的帖子

Nashorn:JavaScript表达式求值会抛出使用lambda公开的函数的类强制转换异常

我有一个以下类,其中一个类型为Long

package com.nm.poc;

public class JSLong{

private Long longValue;

public Long getLongValue() {
    return longValue;
}

public void setLongValue(Long longValue) {
    this.longValue = longValue;
}

public Long testLongValue(Long longValue){
    return longValue;
}

}
Run Code Online (Sandbox Code Playgroud)

我按照以下方式从JavaScript调用方法testLongValue

package com.nm.poc;

import java.util.function.Consumer;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class Main {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("nashorn");

    JSLong jsLong = new JSLong();

    //WORKS
    engine.put("jsLong", jsLong);     
    engine.eval("print(jsLong.testLongValue(20))");

    //Throws ClassCast Integer to Long
    engine.put("jsLong2", (Consumer<Long>)jsLong::testLongValue);
    engine.eval("print(jsLong2(20))"); …
Run Code Online (Sandbox Code Playgroud)

java lambda rhino nashorn java-scripting-engine

5
推荐指数
1
解决办法
506
查看次数

标签 统计

java ×1

java-scripting-engine ×1

lambda ×1

nashorn ×1

rhino ×1