gpt4 book ai didi

java - 从 Rhino 返回多个值到 Java 调用类

转载 作者:行者123 更新时间:2023-11-30 11:30:07 24 4
gpt4 key购买 nike

我正在尝试修改一些嵌入在 Java 中的 Javascript 代码,以将多个值返回给调用 Java 代码。

Java 代码(调用 Javascript):

...
Object result = execFunc.call(context, scope, scope, execArgs);
return ScriptRuntime.toString(result);

Javascript 代码(由 Java 调用):

...
return "string";

我希望返回多个值。

我试过修改 Javascript 以返回一个 HashMap,如下所示:

...
var res = new java.util.HashMap();
res.put("String", "string");
res.put("Integer", 1);
return res;

但是当我在 Java 端转换时,我得到一个 ClassCastException:

...
HashMap result = (HashMap) execFunc.call(context, scope, scope, execArgs);
return ScriptRuntime.toString(result);

结果:

java.lang.ClassCastException: org.mozilla.javascript.NativeJavaObject cannot be cast to java.util.HashMap

我不喜欢在 HashMap 中返回它。我要返回的值是一个字符串和一个整数。理想情况下,我希望返回元组或 HashMap,但如果让它工作的唯一方法是返回数组中的两个字符串,然后解析出整数,那也可以。

任何有关返回多个值的指导都将不胜感激。

这是正确的方法吗,我应该注入(inject)一个可以在 Javascript 端填充的 Java 对象吗?

最佳答案

试试这个

NativeJavaObject njo = (NativeJavaObject) execFunc.call(context, scope, scope, execArgs);
Map map = (Map) njo.unwrap();

关于java - 从 Rhino 返回多个值到 Java 调用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959254/

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