diff -r e3028445a1ff -r 8498cdb7c54b jdk/src/java.base/share/classes/java/util/OptionalInt.java --- a/jdk/src/java.base/share/classes/java/util/OptionalInt.java Fri Feb 13 11:03:57 2015 +0800 +++ b/jdk/src/java.base/share/classes/java/util/OptionalInt.java Fri Feb 13 11:13:27 2015 +0100 @@ -37,8 +37,8 @@ *

Additional methods that depend on the presence or absence of a contained * value are provided, such as {@link #orElse(int) orElse()} * (return a default value if value not present) and - * {@link #ifPresent(java.util.function.IntConsumer) ifPresent()} (execute a block - * of code if the value is present). + * {@link #ifPresent(java.util.function.IntConsumer) ifPresent()} (perform an + * action if the value is present). * *

This is a value-based * class; use of identity-sensitive operations (including reference equality @@ -131,16 +131,35 @@ } /** - * Have the specified consumer accept the value if a value is present, + * If a value is present, perform the given action with the value, * otherwise do nothing. * - * @param consumer block to be executed if a value is present - * @throws NullPointerException if value is present and {@code consumer} is + * @param action the action to be performed if a value is present + * @throws NullPointerException if value is present and {@code action} is * null */ - public void ifPresent(IntConsumer consumer) { + public void ifPresent(IntConsumer action) { if (isPresent) { - consumer.accept(value); + action.accept(value); + } + } + + /** + * If a value is present, perform the given action with the value, + * otherwise perform the given empty-based action. + * + * @param action the action to be performed if a value is present + * @param emptyAction the empty-based action to be performed if a value is + * not present + * @throws NullPointerException if a value is present and {@code action} is + * null, or a value is not present and {@code emptyAction} is null. + * @since 1.9 + */ + public void ifPresentOrElse(IntConsumer action, Runnable emptyAction) { + if (isPresent) { + action.accept(value); + } else { + emptyAction.run(); } }