On 5/16/15 3:00 PM, Remi Forax wrote:
Hi Stuart,
this change is pretty cool,

Hi Rémi, thanks for looking at this.

In the javadoc of Iterator instead of:
   Iterable<Permission> permsIterable = () -> pc.elements().asIterator();
one can write:
   Iterable<Permission> permsIterable = pc.elements()::asIterator;

Ah, I carefully tailored that example to capture "pc" instead of the result of calling pc.elements(). With the latter, if iterator() is called a second time, the two Iterator instances will share the same underlying Enumeration and probably interfere with each other. (Maybe I'll add a note to the example explaining that.)

and I wonder if an example with NetworkInterface.getNetworkInterfaces() is not
better,
I'm not sure a lot of people have to play with permissions outside people of
this list.

Yeah I had to look for a long time to find a good example of Enumeration in the JDK libraries. One problem with NetworkInterface.getNetworkInterfaces() is that it's declared to throw SocketException, which is checked, making it clumsy to use within a lambda. There are other possibilities (e.g., getSubInterfaces()) but that's pretty obscure too. Although the permissions stuff is pretty obscure too, they're pretty easy to get, either by getting one from a class' ProtectionDomain, or creating one yourself.

and for the implementation of asIterator, I think the code can be written like
this:
    default Iterator<E> asIterator() {
         return new Iterator<>() {
             @Override public boolean hasNext() {
                 return hasMoreElements();
             }
             @Override public E next() {
                 return nextElement();
             }
         };
     }

using diamond inference on inner-classes (I think the patch that allows that was
integrated) and making calls to Enumeration.this implicit.

Right, I think I wrote my initial prototype before this compiler change went in! Good catch on the Enumeration.this too; I'll make these updates.

s'marks


regards,
Rémi

On 05/16/2015 02:37 AM, Stuart Marks wrote:
Hi all,

Please review this small API enhancement to add a default method
"asIterator()" to Enumeration that converts it into an Iterator.

Webrev:

    http://cr.openjdk.java.net/~smarks/reviews/8072726/webrev.0/

Bug:

    https://bugs.openjdk.java.net/browse/JDK-8072726

Thanks,

s'marks

Reply via email to