我有一个以下类,其中一个类型为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)