public final class Suppliers extends Object
Supplier
, copied from Guava.
The function signatures below are identical to Google's Guava 18.0, except that guava's functional interfaces have been swapped with Java 8's. It is tested against the same test suite as Google Guava to ensure functional compatibility.
Most of the implementation has been replaced with lambdas, which means that the following functionality has been removed: equals(), hashCode(), toString(), GWT, and serialization.
Lambdas don't support these methods, and there isn't much reason why they should, so we removed them in Durian.
Modifier and Type | Method and Description |
---|---|
static <F,T> Supplier<T> |
compose(Function<? super F,T> function,
Supplier<F> supplier)
Returns a new supplier which is the composition of the provided function
and supplier.
|
static <T> Supplier<T> |
memoize(Supplier<T> delegate)
Returns a supplier which caches the instance retrieved during the first
call to
get() and returns that value on subsequent calls to
get() . |
static <T> Supplier<T> |
memoizeWithExpiration(Supplier<T> delegate,
long duration,
TimeUnit unit)
Returns a supplier that caches the instance supplied by the delegate and
removes the cached value after the specified time has passed.
|
static <T> Supplier<T> |
ofInstance(T instance)
Returns a supplier that always supplies
instance . |
static <T> Function<Supplier<T>,T> |
supplierFunction()
Returns a function that accepts a supplier and returns the result of
invoking
Supplier.get() on that supplier. |
static <T> Supplier<T> |
synchronizedSupplier(Supplier<T> delegate)
Returns a supplier whose
get() method synchronizes on
delegate before calling it, making it thread-safe. |
public static <F,T> Supplier<T> compose(Function<? super F,T> function, Supplier<F> supplier)
supplier
, and then applying
function
to that value. Note that the resulting supplier will not
call supplier
or invoke function
until it is called.public static <T> Supplier<T> memoize(Supplier<T> delegate)
get()
and returns that value on subsequent calls to
get()
. See:
memoization
The returned supplier is thread-safe.
If delegate
is an instance created by an earlier call to memoize
, it is returned directly.
public static <T> Supplier<T> memoizeWithExpiration(Supplier<T> delegate, long duration, TimeUnit unit)
get()
return the cached value if the expiration time has
not passed. After the expiration time, a new value is retrieved, cached,
and returned. See:
memoization
The returned supplier is thread-safe.
duration
- the length of time after a value is created that it
should stop being returned by subsequent get()
callsunit
- the unit that duration
is expressed inIllegalArgumentException
- if duration
is not positivepublic static <T> Supplier<T> ofInstance(@Nullable T instance)
instance
.public static <T> Supplier<T> synchronizedSupplier(Supplier<T> delegate)
get()
method synchronizes on
delegate
before calling it, making it thread-safe.public static <T> Function<Supplier<T>,T> supplierFunction()
Supplier.get()
on that supplier.