JDK 8 RFR for JDK-8022658: Revisit FunctionalInterface on some core libs types

Mike Duigou Mike.Duigou at oracle.COM
Mon Oct 21 18:58:12 UTC 2013


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 <joe.darcy at oracle.com> 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
>  */
> - at 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
>  */
> - at 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
>  */
> - at 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
>  */
> - at 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
>  */
> - at 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
>  */
> - at FunctionalInterface
> public interface Readable {
> 
>     /**
> 




More information about the core-libs-dev mailing list