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面试专辑 文章被收录于专栏
帮您起飞,助您着陆心仪大厂。
查看17道真题和解析