请通过一个适当的示例来说明接口Supplier(在Guava中)的使用。
该Supplier接口只是一个无参数函数的抽象,该函数返回一个值…这是 获取某个对象的某些实例的一种方法 。由于它是如此通用,因此可以用于许多事物。Jared解释了Multimaps工厂如何将其用作工厂来创建Collection值的某种类型的新实例。
Supplier
Multimaps
Collection
鉴于界面的简单性,它还可以Supplier通过将a 的行为包装在Supplier某种程度上改变其行为的行为中,对a 的行为进行非常强大的修饰。记忆化就是一个例子。我自己使用该Suppliers.memoizeWithExpiration方法是一种简单的方法,因此在给定的时间内,某些数据最多只能从服务器读取一次。
Suppliers.memoizeWithExpiration
我还建议您看看Guice以及如何在其中Provider使用该接口。与Guice的工作Provider方式完全相同Supplier且至关重要。
Provider
get()
Provider<T> scope(Key<T> key, Provider<T> unscoped)
Provider<T> unscoped
Provider<T>
NO_SCOPE
unscoped
SINGLETON
unscoped.get()
scope
Suppliers.memoize