• java.util.function.Supplier 接口仅包含一个无参的方法: T get() ,用来获取一个泛型参数指定类型的对象数据。
  • 由于这是一个函数式接口,这也就意味着对应的Lambda表达式需要“对外提供”一个符合泛型类型的对象数据
  1. @FunctionalInterface
  2. public interface Supplier<T> {
  3. T get();
  4. }

Supplier与Optional类实现解决空指针问题

  1. public class SupplierTool {
  2. public static <T> Optional<T> resolve(Supplier<T> resolver) {
  3. try {
  4. T result = resolver.get();
  5. return Optional.ofNullable(result);
  6. } catch (NullPointerException e) {
  7. // 可能会抛出空指针异常,直接返回一个空的 Optional 对象
  8. return Optional.empty();
  9. }
  10. }
  11. }