I was pointed to some comments on core-libs about adapting Enumerations to for loops in SE 8. (Sorry for the new thread -- I wasn't subscribed.) It turns out lambdas + extension methods will make this very easy.
In the API: interface Enumeration<E> extends Iterator<E> { boolean hasMoreElements(); E nextElement(); boolean hasNext() default #hasMoreElements; E next() default #nextElement; void remove() default { throw new UnsupportedOperationException(); } } Note that Iterable is a function type -- a thunk producing an Iterator -- and so we can express Iterables with lambdas and method references. It's becoming clear that a for loop should provide a target type for these things, so that will probably be part of the SE 8 feature set. With a method reference: Hashtable<String,Object> h = …; for (String s : h#keys) { … } With a lambda: for (String s : #{ -> path().to().enumeration() }) { ... } My preference is to also support Iterators directly in for loops; this may or may not make it in: for (String s : path().to().enumeration()) { ... } —Dan