Java に埋め込まれている Javascript コードを変更して、呼び出し元の Java コードに複数の値を返そうとしています。
Java コード (Javascript を呼び出す):
...
Object result = execFunc.call(context, scope, scope, execArgs);
return ScriptRuntime.toString(result);
Javascript コード (Java によって呼び出されます):
...
return "string";
複数の値を返すことを望んでいます。
次のように HashMap を返すように Javascript を変更しようとしました。
...
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 を返すことを検討していますが、それを機能させる唯一の方法が、配列内の 2 つの文字列を返し、整数を解析することである場合も問題ありません。
複数の値を返すためのガイダンスをいただければ幸いです。
これは正しいアプローチですか?代わりに Javascript 側で設定できる Java オブジェクトを注入する必要がありますか?