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 Methods
    Modifier and Type
    Method
    Description
    static <T> Supplier<T>
    lazy(Supplier<T> supplier)
    创建一个延迟计算的Supplier(不允许null值)
    static <T> Supplier<T>
    lazy(Supplier<T> supplier, T defaultValue)
    创建一个延迟计算的Supplier(带默认值)
    static <T> Supplier<T>
    lazyNullable(Supplier<T> supplier)
    创建一个延迟计算的Supplier(允许null值)
    static <T> Supplier<T>
    lazyPredicatable(Supplier<T> supplier, Predicate<T> predicate)
    创建一个可重新验证的延迟Supplier
    static <T> Supplier<T>
    ofConst(T value)
    创建一个静态值Supplier
  • Method Details

    • ofConst

      static <T> Supplier<T> ofConst(T value)
      创建一个静态值Supplier

      返回的Supplier总是返回相同的值,无论调用多少次。 这对于需要Supplier接口但值不会变化的场景很有用。

      Type Parameters:
      T - 值类型
      Parameters:
      value - 要返回的常量值
      Returns:
      总是返回指定值的Supplier
    • lazy

      static <T> Supplier<T> lazy(Supplier<T> supplier)
      创建一个延迟计算的Supplier(不允许null值)

      返回的Supplier会在首次调用get()时执行原始supplier的计算, 并将结果缓存起来,后续调用直接返回缓存的值。

      特性:

      • 线程安全:使用ReentrantLock确保线程安全
      • 延迟计算:只在需要时才执行计算
      • 缓存结果:避免重复计算
      • 不允许null:如果supplier返回null会抛出异常

      Type Parameters:
      T - 返回值类型
      Parameters:
      supplier - 原始Supplier,只会被调用一次
      Returns:
      带缓存功能的延迟Supplier
      Throws:
      IllegalStateException - 如果supplier返回null值
    • lazyNullable

      static <T> Supplier<T> lazyNullable(Supplier<T> supplier)
      创建一个延迟计算的Supplier(允许null值)

      lazy(Supplier)类似,但允许缓存null值。 返回的Supplier会在首次调用get()时执行原始supplier的计算, 并将结果(包括null)缓存起来,后续调用直接返回缓存的值。

      特性:

      • 线程安全:使用ReentrantLock确保线程安全
      • 延迟计算:只在需要时才执行计算
      • 缓存结果:避免重复计算
      • 允许null:可以缓存和返回null值

      Type Parameters:
      T - 返回值类型
      Parameters:
      supplier - 原始Supplier,只会被调用一次
      Returns:
      带缓存功能的延迟Supplier,允许null值
    • lazy

      static <T> Supplier<T> lazy(Supplier<T> supplier, T defaultValue)
      创建一个延迟计算的Supplier(带默认值)

      lazyNullable(Supplier)类似,但当supplier返回null时, 会返回指定的默认值而不是null。

      Type Parameters:
      T - 返回值类型
      Parameters:
      supplier - 原始Supplier,只会被调用一次
      defaultValue - 如果supplier返回null时的默认值
      Returns:
      带缓存功能和默认值的延迟Supplier
    • lazyPredicatable

      static <T> Supplier<T> lazyPredicatable(Supplier<T> supplier, Predicate<T> predicate)
      创建一个可重新验证的延迟Supplier

      该Supplier会缓存值,但使用predicate来验证缓存的值是否仍然有效。 如果验证失败,会重新调用原始supplier获取新值。

      Type Parameters:
      T - 返回值类型
      Parameters:
      supplier - 原始Supplier,可能被多次调用
      predicate - 用于验证缓存值的断言,返回false时会重新获取值
      Returns:
      带验证功能的延迟Supplier