Class Suppliers
- java.lang.Object
-
- com.google.common.base.Suppliers
-
@GwtCompatible public final class Suppliers extends Object
Useful suppliers.All methods return serializable suppliers as long as they're given serializable parameters.
- Since:
- 2.0
- Author:
- Laurence Gonsalves, Harry Heymann
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method 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 toget()
and returns that value on subsequent calls toget()
.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 suppliesinstance
.static <T> Function<Supplier<T>,T>
supplierFunction()
Returns a function that accepts a supplier and returns the result of invokingSupplier.get()
on that supplier.static <T> Supplier<T>
synchronizedSupplier(Supplier<T> delegate)
Returns a supplier whoseget()
method synchronizes ondelegate
before calling it, making it thread-safe.
-
-
-
Method Detail
-
compose
public 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. In other words, the new supplier's value will be computed by retrieving the value fromsupplier
, and then applyingfunction
to that value. Note that the resulting supplier will not callsupplier
or invokefunction
until it is called.
-
memoize
public static <T> Supplier<T> memoize(Supplier<T> delegate)
Returns a supplier which caches the instance retrieved during the first call toget()
and returns that value on subsequent calls toget()
. See: memoizationThe returned supplier is thread-safe. The delegate's
get()
method will be invoked at most once unless the underlyingget()
throws an exception. The supplier's serialized form does not contain the cached value, which will be recalculated whenget()
is called on the reserialized instance.When the underlying delegate throws an exception then this memoizing supplier will keep delegating calls until it returns valid data.
If
delegate
is an instance created by an earlier call tomemoize
, it is returned directly.
-
memoizeWithExpiration
public 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. Subsequent calls toget()
return the cached value if the expiration time has not passed. After the expiration time, a new value is retrieved, cached, and returned. See: memoizationThe returned supplier is thread-safe. The supplier's serialized form does not contain the cached value, which will be recalculated when
get()
is called on the reserialized instance. The actual memoization does not happen when the underlying delegate throws an exception.When the underlying delegate throws an exception then this memoizing supplier will keep delegating calls until it returns valid data.
- Parameters:
duration
- the length of time after a value is created that it should stop being returned by subsequentget()
callsunit
- the unit thatduration
is expressed in- Throws:
IllegalArgumentException
- ifduration
is not positive- Since:
- 2.0
-
ofInstance
public static <T> Supplier<T> ofInstance(@NullableDecl T instance)
Returns a supplier that always suppliesinstance
.
-
synchronizedSupplier
public static <T> Supplier<T> synchronizedSupplier(Supplier<T> delegate)
Returns a supplier whoseget()
method synchronizes ondelegate
before calling it, making it thread-safe.
-
supplierFunction
public static <T> Function<Supplier<T>,T> supplierFunction()
Returns a function that accepts a supplier and returns the result of invokingSupplier.get()
on that supplier.Java 8 users: use the method reference
Supplier::get
instead.- Since:
- 8.0
-
-