我正在尝试修改一些嵌入在 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,但如果让它工作的唯一方法是返回一个数组中的两个字符串,然后解析出也可以的整数。
任何返回多个值的指导将不胜感激。
这是正确的方法吗,我应该注入一个可以在 Javascript 端填充的 Java 对象吗?