【问题标题】:Mozilla Rhino NativeArray.add() is throwing an error - alwaysMozilla Rhino NativeArray.add() 抛出错误 - 总是
【发布时间】:2013-04-03 21:02:36
【问题描述】:

我正在寻找使用 mozilla rhino NativeArray 类在 java 中构建一个 javascript 数组, 但是,当我尝试向NativeArray 添加元素时,会抛出java.lang.UnsupportedOperationException

这是我的代码:

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

这是我收到的错误:

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

如果我从一开始就使用 java 数组创建 NativeArray,一切都会很好。

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 rhino 1.7R4,这是目前最新的版本

这是 Mozilla rhino 的错误还是我做错了什么?

谢谢

【问题讨论】:

  • 必须使用 Rhino 吗?在 Java 中还有其他与 JS 交互的方式比 Rhino 更稳定。
  • @JulienS。你能给我更多的细节吗?

标签: java javascript rhino


【解决方案1】:

为原生数组实现.add() 没有意义。它们是固定长度的数组,长度是恒定的。

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

【讨论】:

  • 是的..你是对的。我在想这更像是 ArrayList
【解决方案2】:

您可以使用以下代码代替 add():

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

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    相关资源
    最近更新 更多