为什么JsArrayString不能实现迭代?

时间:2010-11-15 17:53:50

标签: javascript json gwt overlay jsni

这里的快速问题 - 我第一次使用了JsArrayString,并对这不起作用感到惊讶:

JsArrayString object = ...;
for (String s : object)

所以我刚写了一个C风格的循环:

JsArrayString object = ...;
for (int i=0; i<object.length(); i++) {
    s = object.get(i)
    ...

没什么大不了的,但似乎GWT团队很容易让JSArrayString实现可迭代,所以我想检查并确保我没有遗漏某些东西......

2 个答案:

答案 0 :(得分:4)

我怀疑这是代码膨胀和代码大小的问题。如果他们JsArray实施Iterable,它可能会为其他不会有用的添加打开大门。 JsArray应该尽可能简单和准确。

此外,如果您想要这种行为,您可以编写自己的JsIterable类来执行此操作,正如您所说,实现它应该非常简单。

Lightweight Collections设计文档解决了有关使用JRE集合和相关概念的一些问题,并讨论了哪些功能可能不受支持以确保绝对最小代码大小,包括:

  

直到GWT编译器可以对其进行优化(它迄今为止还不能),新的集合将不支持使用Iterable / Iterator的Java增强的'for'循环语法。我们相信这样的优化是可能的,并且会被添加,但是,这些集合将被改进以实现Iterable。

答案 1 :(得分:0)

你必须以老派的方式去做:)。查看the source