2013-04-03 68 views
0

我使用的是Mozilla犀牛NativeArray类,但是 当我尝试将元素添加到NativeArray一个java.lang.UnsupportedOperationException抛出寻找Java构建一个javascript数组。Mozilla的犀牛NativeArray.add()抛出一个错误 - 总是

这里是我的代码:

NativeArray array=new NativeArray(1); 
array.add("cccc"); 

,这里是我收到的错误:

Caused by: java.lang.UnsupportedOperationException 
    at org.mozilla.javascript.NativeArray.add(NativeArray.java:1826) 

如果我创建NativeArray与从一开始一切的Java数组是伟大的工作。

String[] str=new String[2]; 
str[0]="aaaa"; 
str[1]="bbbb"; 
NativeArray array=new NativeArray(str); 

我一直在寻找通过NativeArray源代码,我很惊讶地看到,add方法将总是抛出错误 这里是源代码:http://grepcode.com/file/repo1.maven.org/maven2/org.mozilla/rhino/1.7R4/org/mozilla/javascript/NativeArray.java#1825

注:我使用Mozilla的犀牛1.7 R4这是目前为止的最新版本

这是一个来自mozilla rhino的bug还是我做错了什么?

感谢

+0

是否使用犀牛的要求?还有其他的方法可以与Java中的JS进行交互,它比Rhino更稳定。 – Julien 2013-04-03 21:07:26

+0

@JulienS。你能给我更多的细节吗? – 2013-04-03 23:52:11

回答

1

它没有任何意义实施.add()的本地阵列。它们是固定长度的数组,长度不变。

请注意,.add()java.util.Collection接口中被标记为“可选操作”。

+0

是的..你说得对。我在想这更像是ArrayList – 2013-04-03 23:55:51

0

您可以使用下面的代码,而不是加():

NativeArray array; 
array.put(array.size(), array, result);