A value container where the value is lazily obtained from the given
Supplier
on the first
get()
call. All subsequent
get()
calls will return the same value.
There is at most
one call to the
Supplier
. The state whether the
Supplier
was called in the
past is stored within the
Lazy
instance.
This means that
null
is handled transparently: if the
Supplier
returns
null
, the
Lazy
instance will return
null
for all subsequent calls of
get()
as well.
This class only handles the value. Exceptions thrown by the
Supplier
are simply passed on and the internal
state of
Lazy
does not change.