Hi, http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8059324-Optional-orElseThrow-signatures/webrev/
The patch fixes up the signatures of Optional{Int, Long, Double}.orElseThrow to be consistent with Optional.orElseThrow. I believe this is a compatible change since the classes are final. I will also file a CCC. Paul. diff -r 8b8b84397c5a src/java.base/share/classes/java/util/OptionalDouble.java --- a/src/java.base/share/classes/java/util/OptionalDouble.java Tue Jan 20 16:35:19 2015 +0000 +++ b/src/java.base/share/classes/java/util/OptionalDouble.java Tue Jan 20 16:54:07 2015 +0000 @@ -182,7 +182,7 @@ * @throws NullPointerException if no value is present and * {@code exceptionSupplier} is null */ - public<X extends Throwable> double orElseThrow(Supplier<X> exceptionSupplier) throws X { + public<X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { if (isPresent) { return value; } else { diff -r 8b8b84397c5a src/java.base/share/classes/java/util/OptionalInt.java --- a/src/java.base/share/classes/java/util/OptionalInt.java Tue Jan 20 16:35:19 2015 +0000 +++ b/src/java.base/share/classes/java/util/OptionalInt.java Tue Jan 20 16:54:07 2015 +0000 @@ -182,7 +182,7 @@ * @throws NullPointerException if no value is present and * {@code exceptionSupplier} is null */ - public<X extends Throwable> int orElseThrow(Supplier<X> exceptionSupplier) throws X { + public<X extends Throwable> int orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { if (isPresent) { return value; } else { diff -r 8b8b84397c5a src/java.base/share/classes/java/util/OptionalLong.java --- a/src/java.base/share/classes/java/util/OptionalLong.java Tue Jan 20 16:35:19 2015 +0000 +++ b/src/java.base/share/classes/java/util/OptionalLong.java Tue Jan 20 16:54:07 2015 +0000 @@ -182,7 +182,7 @@ * @throws NullPointerException if no value is present and * {@code exceptionSupplier} is null */ - public<X extends Throwable> long orElseThrow(Supplier<X> exceptionSupplier) throws X { + public<X extends Throwable> long orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { if (isPresent) { return value; } else {