2

ここで簡単な質問 - 私は初めて JsArrayString を使用しましたが、これが機能しないことに驚きました:

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

そこで、C スタイルの for ループを書きました。

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

大したことではありませんが、GWT チームが JSArrayString に iterable を実装するのは簡単だったようです。

4

2 に答える 2

4

それはコードの膨張の問題であり、そのことについてはコードのサイズの問題だと思います。彼らがJsArray実装を行う場合Iterable、それは常に役立つとは限らない他の追加への扉を開くかもしれません。 JsArraysは、可能な限り単純で必要最低限​​のものであることが意図されています。

さらに、JsIterableこの動作が必要な場合は、実装が非常に簡単であると述べたように、これを実行する独自のクラスを作成できます。

軽量コレクションの設計ドキュメントでは、JREコレクションと関連する概念の使用に関するいくつかの問題に対処し、次のような絶対最小コードサイズを確保するためにサポートされないままにすることができる機能について説明します。

GWTコンパイラーがそれを最適化できるようになるまで(これまでは不可能です)、新しいコレクションは、Iterable/Iteratorを使用するJava拡張の「for」ループ構文をサポートしません。このような最適化は可能であり、追加されると確信していますが、その時点で、これらのコレクションはIterableを実装するために改良されます。

于 2010-11-15T21:10:12.297 に答える
0

古い学校の方法でそれを行う必要があります:)。そのソースを調べてください。

于 2010-11-15T18:13:06.937 に答える