JDK 8 RFR for JDK-8022658: Revisit FunctionalInterface on some core libs types
Joe Darcy
joe.darcy at oracle.com
Mon Oct 21 18:16:22 UTC 2013
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