| Modifier and Type | Field and Description |
|---|---|
private T |
reference |
private static long |
serialVersionUID |
| Modifier and Type | Method and Description |
|---|---|
java.util.Set<T> |
asSet()
Returns an immutable singleton
Set whose only element is the contained instance if it
is present; an empty immutable Set otherwise. |
boolean |
equals(java.lang.Object object)
Returns
true if object is an Optional instance, and either the
contained references are equal to each other or both are absent. |
T |
get()
Returns the contained instance, which must be present.
|
int |
hashCode()
Returns a hash code for this instance.
|
boolean |
isPresent()
Returns
true if this holder contains a (non-null) instance. |
Optional<T> |
or(Optional<? extends T> secondChoice)
Returns this
Optional if it has a value present; secondChoice otherwise. |
T |
or(Supplier<? extends T> supplier)
Returns the contained instance if it is present;
supplier.get() otherwise. |
T |
or(T defaultValue)
Returns the contained instance if it is present;
defaultValue otherwise. |
T |
orNull()
Returns the contained instance if it is present;
null otherwise. |
java.lang.String |
toString()
Returns a string representation for this instance.
|
<V> Optional<V> |
transform(Function<? super T,V> function)
If the instance is present, it is transformed with the given
Function; otherwise,
Optional.absent() is returned. |
absent, fromJavaUtil, fromNullable, of, presentInstances, toJavaUtil, toJavaUtilprivate final T reference
private static final long serialVersionUID
Present(T reference)
public boolean isPresent()
Optionaltrue if this holder contains a (non-null) instance.
Comparison to java.util.Optional: no differences.
public T get()
OptionalOptional.or(Object) or Optional.orNull() instead.
Comparison to java.util.Optional: when the value is absent, this method
throws IllegalStateException, whereas the Java 8 counterpart throws NoSuchElementException.
public T or(T defaultValue)
OptionaldefaultValue otherwise. If no default
value should be required because the instance is known to be present, use Optional.get()
instead. For a default value of null, use Optional.orNull().
Note about generics: The signature public T or(T defaultValue) is overly
restrictive. However, the ideal signature, public <S super T> S or(S), is not legal
Java. As a result, some sensible operations involving subtypes are compile errors:
Optional<Integer> optionalInt = getSomeOptionalInt();
Number value = optionalInt.or(0.5); // error
FluentIterable<? extends Number> numbers = getSomeNumbers();
Optional<? extends Number> first = numbers.first();
Number value = first.or(0.5); // error
As a workaround, it is always safe to cast an Optional<? extends T> to Optional<T>. Casting either of the above example Optional instances to Optional<Number> (where Number is the desired output type) solves the problem:
Optional<Number> optionalInt = (Optional) getSomeOptionalInt();
Number value = optionalInt.or(0.5); // fine
FluentIterable<? extends Number> numbers = getSomeNumbers();
Optional<Number> first = (Optional) numbers.first();
Number value = first.or(0.5); // fine
Comparison to java.util.Optional: this method is similar to Java 8's Optional.orElse, but will not accept null as a defaultValue (Optional.orNull()
must be used instead). As a result, the value returned by this method is guaranteed non-null,
which is not the case for the java.util equivalent.
public Optional<T> or(Optional<? extends T> secondChoice)
OptionalOptional if it has a value present; secondChoice otherwise.
Comparison to java.util.Optional: this method has no equivalent in Java 8's
Optional class; write thisOptional.isPresent() ? thisOptional : secondChoice
instead.
public T or(Supplier<? extends T> supplier)
Optionalsupplier.get() otherwise.
Comparison to java.util.Optional: this method is similar to Java 8's Optional.orElseGet, except when supplier returns null. In this case this
method throws an exception, whereas the Java 8 method returns the null to the caller.
public T orNull()
Optionalnull otherwise. If the instance is
known to be present, use Optional.get() instead.
Comparison to java.util.Optional: this method is equivalent to Java 8's
Optional.orElse(null).
public java.util.Set<T> asSet()
OptionalSet whose only element is the contained instance if it
is present; an empty immutable Set otherwise.
Comparison to java.util.Optional: this method has no equivalent in Java 8's
Optional class. However, this common usage:
for (Foo foo : possibleFoo.asSet()) {
doSomethingWith(foo);
}
... can be replaced with:
possibleFoo.ifPresent(foo -> doSomethingWith(foo));
Java 9 users: some use cases can be written with calls to optional.stream().
public <V> Optional<V> transform(Function<? super T,V> function)
OptionalFunction; otherwise,
Optional.absent() is returned.
Comparison to java.util.Optional: this method is similar to Java 8's Optional.map, except when function returns null. In this case this method
throws an exception, whereas the Java 8 method returns Optional.absent().
public boolean equals(@CheckForNull
java.lang.Object object)
Optionaltrue if object is an Optional instance, and either the
contained references are equal to each other or both are absent.
Note that Optional instances of differing parameterized types can be equal.
Comparison to java.util.Optional: no differences.
public int hashCode()
OptionalComparison to java.util.Optional: this class leaves the specific choice of
hash code unspecified, unlike the Java 8 equivalent.
public java.lang.String toString()
OptionalComparison to java.util.Optional: this class leaves the specific string
representation unspecified, unlike the Java 8 equivalent.