我在这个项目中使用了带有 Rhino 的 javax.scripting。
我有一个返回 Java 对象(Double、Long、Integer 等)的 Java 方法。我想从 javascript 调用该方法并将结果作为 Javascript 原始类型引用。但是,javacript 将返回类型识别为 Object。
如何强制它转换为 javascript 原语?
这个问题与http://groups.google.com/group/mozilla.dev.tech.js-engine.rhino/browse_thread/thread/2f3d43bb49d5288a/dde79e1aa72e1301非常相似
问题是我如何获得对上下文和 WrapFactory 的引用?
示例代码:
public class data
{
Double value = 1.0d;
public Number get() { return value; }
}
public static void main(String[] args)
{
ScriptEngine engine = new ScriptEngineManager().getEngineByName ("rhino");
data data = new data();
try
{
engine.eval("function test(data) { return data.getD('value1') + 5;};");
System.out.println("Result:" + ((Invocable)engine).invokeFunction("test", data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
输出:结果:15