2010-11-15 17 views
2

question rapide ici - je viens d'utiliser JsArrayString pour la première fois, et a été surpris que cela ne fonctionne pas:Pourquoi JsArrayString n'est-il pas implémentable?

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

Je viens d'écrire un style C pour la boucle:

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

Pas un gros problème, mais il semble qu'il aurait été simple pour l'équipe GWT d'avoir JSArrayString implémentable itérative, donc je voulais vérifier et me assurer que je ne manquais pas quelque chose ...

Répondre

4

Je soupçonne qu'il s'agit d'un problème de gonflement du code et, à ce titre, de taille de code. Si elles font JsArray mettre en œuvre Iterable, il pourrait ouvrir la porte à d'autres ajouts qui ne seraient pas toujours utiles. JsArray s sont censés être absolument aussi simples et barebones que possible.

De plus, vous pouvez écrire votre propre classe JsIterable qui le fait si vous voulez ce comportement, comme vous l'avez dit, cela devrait être assez simple à implémenter.

Le doc de conception Lightweight Collections aborde certaines des questions autour de l'utilisation des collections JRE et des concepts connexes et examine quelles fonctionnalités pourraient être laissées non pris en charge pour assurer la taille du code minimum absolu, y compris:

Jusqu'à ce que le compilateur GWT peut optimiser (ce qui n'est pas possible à ce jour), les nouvelles collections ne prendront pas en charge la syntaxe de boucle "for" Java améliorée qui utilise Iterable/Iterator. Nous croyons que de telles optimisations sont possibles et seront ajoutées, cependant, à ce moment, ces collections seront modernisées pour implémenter Iterable.

0

Vous devez le faire la façon old-school :). Découvrez the source de celui-ci.