gpt4 book ai didi

java - Rhino:如何从 JavaScript 调用的 Java 方法返回一个整数?

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:33 26 4
gpt4 key购买 nike

我想公开一个 Java 方法,以便它可以被任意脚本调用。然后脚本应该能够对返回值执行算术运算。

问题在于,虽然暴露的方法返回一个 Java Integer,但脚本实际上并没有得到一个常规数字,而是一个 org.mozilla.javascript.NativeJavaObject 的实例>.

下面是一些简化的测试代码,显示了该行为:

public class RhinoTest
{
public static void main(String[] args)
{
String script = "foo.getBar() + 1";
Context context = Context.enter();
ScriptableObject scriptableObject = context.initStandardObjects();
ScriptableObject.putProperty(scriptableObject, "foo", new Foo());
Object result = context.evaluateString(scriptableObject, script, "FooBar", 1, null);
Context.exit();
System.out.println(result);
}

public static class Foo
{
public Integer getBar()
{
return 9;
}
}
}

预期结果是 10,但脚本返回 91

那么我怎样才能让脚本中发生的 getBar() 调用真正返回一个常规的 Javascript 数据类型呢?请注意,我不想通过添加 unwrap() 调用、parseint() 等来更改脚本代码。

最佳答案

修改上下文 WrapFactory :

context.getWrapFactory()
.setJavaPrimitiveWrap(false);

关于java - Rhino:如何从 JavaScript 调用的 Java 方法返回一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14809005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com