当使用java的内置JavaScript解释器时,为什么我可以使用Arrays.forEach()遍历java列表,但不能遍历本地数组?我有以下的测试代码使用Nashorn对阵列进行迭代
var ArrayList = Java.type('java.util.ArrayList');
var list = new ArrayList();
list.add('a');
list.add('b');
list.add('c');
var StringArray = Java.type("java.lang.String[]");
var array = new StringArray(3);
array[0] = "A";
array[1] = "B";
array[2] = "C";
list.forEach(function(v) { print(v); });
array.forEach(function(v) { print(v); });
,我会期望打印出来
a b c A B C
而是我得到
a b c
TypeError: [Ljava.lang.String;@644e4fbf has no such function "forEach" in at line number 14
下面的作品,但为什么不array.forEach( )?
for (var i=0; i<array.length; ++i)
print(array[i]);
我的问题是,我的javascript代码要调用Java函数返回一个String []的负荷,我想处理由此产生的对象,就好像是一个普通的JavaScript数组。有没有更容易的方法来解决这个问题,而不是编写大量的包装函数在java中将我的数组转换为ArrayList?
您可以使用(非常不幸,在我看来)Nashorn'为每个(var元素数组)'语法。 (从Mozilla的扩展中,我认为已经在现代Firefox中被淘汰了。) – Pointy