2010-11-15 116 views
2

快速的問題在這裏 - 我只是用JsArrayString首次,並感到驚訝的是這並不工作:爲什麼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實現可迭代是很簡單的,所以我想檢查一下並確保我沒有丟失一些東西...

回答

4

我懷疑這是代碼膨脹的問題,併爲此事代碼大小。如果他們使JsArray執行Iterable,它可能會打開其他添加並不總是有用的大門。 JsArray s是爲了儘可能簡單和準確。

此外,如果您需要這種行爲,您可以編寫自己的JsIterable類,正如您所說的那樣,它應該非常容易實現。

Lightweight Collections設計文檔解決了一些問題,各地使用JRE的集合和相關概念,並討論了哪些功能可以留給不支持,以確保絕對最小的代碼大小,包括:

直到GWT編譯器可以優化它(它不能這樣),新集合將不支持使用Iterable/Iterator的Java增強型'for'循環語法。我們確實認爲這樣的優化是可能的並且將被添加,但是,在那個時候,這些集合將被改進以實現Iterable。

相關問題