Enumeration adapters in SE 8
Dan Smith
daniel.smith at oracle.com
Wed Aug 24 11:10:11 PDT 2011
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
More information about the lambda-dev
mailing list