Package com.google.common.base
Class Suppliers
- java.lang.Object
-
- com.google.common.base.Suppliers
-
@GwtCompatible public final class Suppliers extends java.lang.Object
Useful suppliers.All methods return serializable suppliers as long as they're given serializable parameters.
- Since:
- 2.0 (imported from Google Collections Library)
-
-
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, java.util.concurrent.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 supplier's serialized form does not contain the cached value, which will be recalculated when
get()
is called on the reserialized instance.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, java.util.concurrent.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.- 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:
java.lang.IllegalArgumentException
- ifduration
is not positive- Since:
- 2.0
-
ofInstance
public static <T> Supplier<T> ofInstance(@Nullable 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
@Beta 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.- Since:
- 8.0
-
-