Nashorn JS对象是否适用于java.util.Map? [英] Is it worked Nashorn JS object to java.util.Map?

查看:178
本文介绍了Nashorn JS对象是否适用于java.util.Map?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有java方法

void someMethod(String str, Map map) {
    ...
}

从JS调用此方法

var map = new Object()
map.key1 = "val1"
...someMethod(str, map)

异常:

java.lang.NoSuchMethodException: None of the fixed arity signatures
[(java.lang.String, java.util.Map)] of method org.prjctor.shell.Bash.eval
match the argument types [java.lang.String, jdk.nashorn.internal.scripts.JO]

但是在Nashorn文档中映射Java和JavaScript之间的数据类型说每个JavaScript对象也是一个java.util.Map,因此接收地图的API将直接接收它们。

But in Nashorn docs "Mapping of Data Types Between Java and JavaScript" said "Every JavaScript object is also a java.util.Map so APIs receiving maps will receive them directly".

我做错了什么?

推荐答案

同意以前的答案,你不能像文档所暗示的那样做。
但是你可以按如下方式创建和传递地图

Agree with the previous answers that you cannot do this as the docs have implied. However you could create and pass a map as follows

..
var HashMap = Java.type('java.util.HashMap');
var map = new HashMap();
map.put('1', 'val1');
...someMethod(str, map)

这篇关于Nashorn JS对象是否适用于java.util.Map?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆