T - the type of instance that can be contained. Optional is naturally
     covariant on this type, so it is safe to cast an Optional<T> to Optional<S> for any supertype S of T.@GwtCompatible(serializable=true) public abstract class Optional<T> extends Object implements Serializable
null".
 A non-null Optional<T> reference can be used as a replacement for a nullable
 T reference. It allows you to represent "a T that must be present" and
 a "a T that might be absent" as two distinct types in your program, which can
 aid clarity.
 
Some uses of this class include
null to indicate
     that no value was available
 Optional.absent())
 null (though there are
     
     several other approaches to this that should be considered first)
 A common alternative to using this class is to find or create a suitable null object for the type in question.
This class is not intended as a direct analogue of any existing "option" or "maybe" construct from other programming environments, though it may bear some similarities.
See the Guava User Guide article on 
 using Optional.
| Modifier and Type | Method and Description | 
|---|---|
| static <T> Optional<T> | absent()Returns an  Optionalinstance with no contained reference. | 
| abstract Set<T> | asSet() | 
| abstract boolean | equals(Object object)Returns  trueifobjectis anOptionalinstance, and either
 the contained references are equal to each other or both
 are absent. | 
| static <T> Optional<T> | fromNullable(T nullableReference)If  nullableReferenceis non-null, returns anOptionalinstance containing that
 reference; otherwise returnsabsent(). | 
| abstract T | get()Returns the contained instance, which must be present. | 
| abstract int | hashCode()Returns a hash code for this instance. | 
| abstract boolean | isPresent()Returns  trueif this holder contains a (non-null) instance. | 
| static <T> Optional<T> | of(T reference)Returns an  Optionalinstance containing the given non-null reference. | 
| abstract Optional<T> | or(Optional<? extends T> secondChoice)Returns this  Optionalif it has a value present;secondChoiceotherwise. | 
| abstract T | or(Supplier<? extends T> supplier)Returns the contained instance if it is present;  supplier.get()otherwise. | 
| abstract T | or(T defaultValue)Returns the contained instance if it is present;  defaultValueotherwise. | 
| abstract T | orNull()Returns the contained instance if it is present;  nullotherwise. | 
| static <T> Iterable<T> | presentInstances(Iterable<? extends Optional<? extends T>> optionals)Returns the value of each present instance from the supplied  optionals, in order,
 skipping over occurrences ofabsent(). | 
| abstract String | toString()Returns a string representation for this instance. | 
| abstract <V> Optional<V> | transform(Function<? super T,V> function) | 
public static <T> Optional<T> absent()
Optional instance with no contained reference.public static <T> Optional<T> of(T reference)
Optional instance containing the given non-null reference.public static <T> Optional<T> fromNullable(@Nullable T nullableReference)
nullableReference is non-null, returns an Optional instance containing that
 reference; otherwise returns absent().public abstract boolean isPresent()
true if this holder contains a (non-null) instance.public abstract T get()
or(Object) or orNull() instead.IllegalStateException - if the instance is absent (isPresent() returns
     false)public abstract T or(T defaultValue)
defaultValue otherwise. If
 no default value should be required because the instance is known to be present, use
 get() instead. For a default value of null, use 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); // finepublic abstract Optional<T> or(Optional<? extends T> secondChoice)
Optional if it has a value present; secondChoice
 otherwise.@Beta public abstract T or(Supplier<? extends T> supplier)
supplier.get() otherwise. If the
 supplier returns null, a NullPointerException is thrown.NullPointerException - if the supplier returns null@Nullable public abstract T orNull()
null otherwise. If the
 instance is known to be present, use get() instead.public abstract Set<T> asSet()
Set whose only element is the contained instance
 if it is present; an empty immutable Set otherwise.public abstract <V> Optional<V> transform(Function<? super T,V> function)
Function; otherwise,
 absent() is returned. If the function returns null, a
 NullPointerException is thrown.NullPointerException - if the function returns nullpublic abstract boolean equals(@Nullable Object object)
true 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.equals in class Objectobject - the reference object with which to compare.true if this object is the same as the obj
          argument; false otherwise.Object.hashCode(), 
HashMappublic abstract int hashCode()
hashCode in class ObjectObject.equals(java.lang.Object), 
System.identityHashCode(java.lang.Object)public abstract String toString()
@Beta public static <T> Iterable<T> presentInstances(Iterable<? extends Optional<? extends T>> optionals)
optionals, in order,
 skipping over occurrences of absent(). Iterators are unmodifiable and are
 evaluated lazily.Copyright © 2010-2014. All Rights Reserved.