Supplier的使用场景有哪些?

一、延迟执行:在需要时才计算结果,常用于日志、缓存或条件判断

logIfEnabled(() -> heavyComputation());
 
void logIfEnabled(Supplier<String> msgSupplier) {
    if (isLogEnabled()) {
        System.out.println(msgSupplier.get());
    }
}

二、工厂模式的替代

传统写法:

public interface Factory<T> {
  T create();
}

完全可以用 Supplier<T> 取代:

Supplier<User> userFactory = User::new;

User u = userFactory.get();

三、Stream 的 generate() 方法:以 Supplier 作为数据来源

import java.util.stream.Stream;
 
Stream<Double> randoms = Stream.generate(Math::random);
randoms.limit(3).forEach(System.out::println);

四、Optional 的 orElseGet():用于提供默认值

Optional<String> name = Optional.empty();
String result = name.orElseGet(() -> "DefaultName"); // Supplier 用于提供默认值
System.out.println(result); // DefaultName

#函数式编程##java原理#
27届毕业生-Java面试专辑 文章被收录于专栏

帮您起飞,助您着陆心仪大厂。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务