2

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 オブジェクトを注入する必要がありますか?

4

1 に答える 1