我正在查看“ Java SE 8 for the really Impatient: Programming with Lambdas ”中的一个例子。



所以我不明白的是 - 我们可以在示例 1(不使用 lambda 的代码)中使用 logger.isLoggable(Level.INFO) 并且只有当我们满足 logger.isLoggable(Level.INFO) 时才会计算消息字符串。

logger.info("x: " + x + ", y: " + y);

在这种情况下使用 lambda 有什么用?

最佳答案

据我所知,这完全是关于 Supplier 以及推迟执行的方式。 IMO 更好的例子是 Optional 两种方法: orElseorElseGet
orElse 返回 T 或在您的示例中返回 String ;另一方面 orElseGet 返回一个 Supplier<T> ,仅在需要时计算(当 Optional 实际丢失时):

public T orElseGet(Supplier<? extends T> supplier) {
    return value != null ? value : supplier.get();
}

这里的区别在于 orElse 总是计算值,有点像急切地;即使它不需要。

关于java - 谁能解释一下这个说法 - "The point of all lambdas is deferred execution",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44378418/

10-10 05:22