Interface Suppliers
public interface Suppliers
供应者工具接口,提供各种Supplier实现
该接口提供了多种有用的Supplier工具方法,包括:
- 常量Supplier - 总是返回相同值的Supplier
- 延迟Supplier - 只在首次调用时执行计算并缓存结果
- 可空延迟Supplier - 允许缓存null值的延迟Supplier
- 条件Supplier - 基于条件判断返回不同值的Supplier
- Since:
- 2022-04-16
- Author:
- Cody Lu
-
Method Summary
Static MethodsModifier and TypeMethodDescriptionstatic <T> Supplier<T> 创建一个延迟计算的Supplier(不允许null值)static <T> Supplier<T> 创建一个延迟计算的Supplier(带默认值)static <T> Supplier<T> lazyNullable(Supplier<T> supplier) 创建一个延迟计算的Supplier(允许null值)static <T> Supplier<T> lazyPredicatable(Supplier<T> supplier, Predicate<T> predicate) 创建一个可重新验证的延迟Supplierstatic <T> Supplier<T> ofConst(T value) 创建一个静态值Supplier
-
Method Details
-
ofConst
创建一个静态值Supplier返回的Supplier总是返回相同的值,无论调用多少次。 这对于需要Supplier接口但值不会变化的场景很有用。
- Type Parameters:
T- 值类型- Parameters:
value- 要返回的常量值- Returns:
- 总是返回指定值的Supplier
-
lazy
创建一个延迟计算的Supplier(不允许null值)返回的Supplier会在首次调用get()时执行原始supplier的计算, 并将结果缓存起来,后续调用直接返回缓存的值。
特性:
- 线程安全:使用ReentrantLock确保线程安全
- 延迟计算:只在需要时才执行计算
- 缓存结果:避免重复计算
- 不允许null:如果supplier返回null会抛出异常
- Type Parameters:
T- 返回值类型- Parameters:
supplier- 原始Supplier,只会被调用一次- Returns:
- 带缓存功能的延迟Supplier
- Throws:
IllegalStateException- 如果supplier返回null值
-
lazyNullable
创建一个延迟计算的Supplier(允许null值)与
lazy(Supplier)类似,但允许缓存null值。 返回的Supplier会在首次调用get()时执行原始supplier的计算, 并将结果(包括null)缓存起来,后续调用直接返回缓存的值。特性:
- 线程安全:使用ReentrantLock确保线程安全
- 延迟计算:只在需要时才执行计算
- 缓存结果:避免重复计算
- 允许null:可以缓存和返回null值
- Type Parameters:
T- 返回值类型- Parameters:
supplier- 原始Supplier,只会被调用一次- Returns:
- 带缓存功能的延迟Supplier,允许null值
-
lazy
创建一个延迟计算的Supplier(带默认值)与
lazyNullable(Supplier)类似,但当supplier返回null时, 会返回指定的默认值而不是null。- Type Parameters:
T- 返回值类型- Parameters:
supplier- 原始Supplier,只会被调用一次defaultValue- 如果supplier返回null时的默认值- Returns:
- 带缓存功能和默认值的延迟Supplier
-
lazyPredicatable
创建一个可重新验证的延迟Supplier该Supplier会缓存值,但使用predicate来验证缓存的值是否仍然有效。 如果验证失败,会重新调用原始supplier获取新值。
- Type Parameters:
T- 返回值类型- Parameters:
supplier- 原始Supplier,可能被多次调用predicate- 用于验证缓存值的断言,返回false时会重新获取值- Returns:
- 带验证功能的延迟Supplier
-