< prev index next >
src/java.base/share/classes/java/util/OptionalLong.java
Print this page
rev 14279 : [mq]: 8140281-deprecation-optional.get
@@ -105,25 +105,58 @@
public static OptionalLong of(long value) {
return new OptionalLong(value);
}
/**
+ * Equivalent to {@link #getWhenPresent()}.
* If a value is present, returns the value, otherwise throws
* {@code NoSuchElementException}.
*
+ * @deprecated
+ * This method's name {@code getAsLong} makes it the obvious method to
+ * call to retrieve the value from this {@code OptionalLong}. However, it has
+ * no mechanism to avoid an exception if this {@code OptionalLong} is empty.
+ * This tends to lead to code that mishandles empty {@code OptionalLong}
+ * values. Consider using other methods that handle the case where
+ * the {@code OptionalLong} might be empty, such as
+ * {@link #ifPresent(java.util.function.LongConsumer) ifPresent()}
+ * and related methods, and
+ * {@link #orElse(long) orElse()} and related methods.
+ * Use {@link getWhenPresent()} when it is known that a value is
+ * always present.
+ *
* @return the value described by this {@code OptionalLong}
* @throws NoSuchElementException if no value is present
* @see OptionalLong#isPresent()
*/
+ @Deprecated(since="9")
public long getAsLong() {
if (!isPresent) {
throw new NoSuchElementException("No value present");
}
return value;
}
/**
+ * If a value is present, returns the value, otherwise throws
+ * {@code NoSuchElementException}.
+ *
+ * @apiNote
+ * Use this method only when it is known that a value is always present.
+ *
+ * @return the value described by this {@code OptionalLong}
+ * @throws NoSuchElementException if no value is present
+ * @see OptionalLong#isPresent()
+ */
+ public long getWhenPresent() {
+ if (!isPresent) {
+ throw new NoSuchElementException("No value present");
+ }
+ return value;
+ }
+
+ /**
* If a value is present, returns {@code true}, otherwise {@code false}.
*
* @return {@code true} if a value is present, otherwise {@code false}
*/
public boolean isPresent() {
< prev index next >