I am fine with all of these removals including Iterable. In some future world where Iterable<T> can extend Supplier<Iterator<T>> then it can be revisited.
Mike On Oct 21 2013, at 11:16 , Joe Darcy <[email protected]> wrote: > Hello, > > Earlier in JDK 8, various core library classes were annotated with the > @FunctionalInterface annotation (JDK-8005623 Retrofit FunctionalInterface > annotations to core platform interfaces). As experience has been gained with > the feature, the time has come to revisit some of those annotations under > issue > > JDK-8022658: Revisit FunctionalInterface on some core libs types > > In brief, I propose removing @FunctionalInterface from the following six > types: > > src/share/classes/java/io/Closeable.java > src/share/classes/java/io/Flushable.java > src/share/classes/java/lang/AutoCloseable.java > src/share/classes/java/lang/Comparable.java > src/share/classes/java/lang/Iterable.java > src/share/classes/java/lang/Readable.java > > In these cases, the single method of the interface is more so a mix-in/trait > like feature and not readily usable standalone in a lambda expression. Patch > below. > > Thanks, > > -Joe > > diff -r 698baf22e081 src/share/classes/java/io/Closeable.java > --- a/src/share/classes/java/io/Closeable.java Mon Oct 21 13:57:11 2013 > +0200 > +++ b/src/share/classes/java/io/Closeable.java Mon Oct 21 11:15:17 2013 > -0700 > @@ -34,7 +34,6 @@ > * > * @since 1.5 > */ > -@FunctionalInterface > public interface Closeable extends AutoCloseable { > > /** > diff -r 698baf22e081 src/share/classes/java/io/Flushable.java > --- a/src/share/classes/java/io/Flushable.java Mon Oct 21 13:57:11 2013 > +0200 > +++ b/src/share/classes/java/io/Flushable.java Mon Oct 21 11:15:17 2013 > -0700 > @@ -34,7 +34,6 @@ > * > * @since 1.5 > */ > -@FunctionalInterface > public interface Flushable { > > /** > diff -r 698baf22e081 src/share/classes/java/lang/AutoCloseable.java > --- a/src/share/classes/java/lang/AutoCloseable.java Mon Oct 21 13:57:11 > 2013 +0200 > +++ b/src/share/classes/java/lang/AutoCloseable.java Mon Oct 21 11:15:17 > 2013 -0700 > @@ -48,7 +48,6 @@ > * @author Josh Bloch > * @since 1.7 > */ > -@FunctionalInterface > public interface AutoCloseable { > /** > * Closes this resource, relinquishing any underlying resources. > diff -r 698baf22e081 src/share/classes/java/lang/Comparable.java > --- a/src/share/classes/java/lang/Comparable.java Mon Oct 21 13:57:11 2013 > +0200 > +++ b/src/share/classes/java/lang/Comparable.java Mon Oct 21 11:15:17 2013 > -0700 > @@ -93,7 +93,6 @@ > * @see java.util.Comparator > * @since 1.2 > */ > -@FunctionalInterface > public interface Comparable<T> { > /** > * Compares this object with the specified object for order. Returns a > diff -r 698baf22e081 src/share/classes/java/lang/Iterable.java > --- a/src/share/classes/java/lang/Iterable.java Mon Oct 21 13:57:11 2013 > +0200 > +++ b/src/share/classes/java/lang/Iterable.java Mon Oct 21 11:15:17 2013 > -0700 > @@ -42,7 +42,6 @@ > * @since 1.5 > * @jls 14.14.2 The enhanced for statement > */ > -@FunctionalInterface > public interface Iterable<T> { > /** > * Returns an iterator over elements of type {@code T}. > diff -r 698baf22e081 src/share/classes/java/lang/Readable.java > --- a/src/share/classes/java/lang/Readable.java Mon Oct 21 13:57:11 2013 > +0200 > +++ b/src/share/classes/java/lang/Readable.java Mon Oct 21 11:15:17 2013 > -0700 > @@ -34,7 +34,6 @@ > * > * @since 1.5 > */ > -@FunctionalInterface > public interface Readable { > > /** >
