Java 8 Boolean.logicalOr 方法

2022-08-31 14:06:46

在Java中,类中添加了8个新方法。Boolean

让我们来谈谈其中之一

public static boolean Boolean.logicalOr(boolean a , boolean b)

现在,我的问题是,为什么需要它们?

以下两种情况有什么区别。

boolean result = a || b;Boolean result = Boolean.logicalOr(a,b);

有什么特别之处,我什么时候应该更喜欢一个而不是另一个。Boolean.logicalOr()


答案 1

这些方法主要是为了您的方便,并通过在lambdas/streams中使用方法引用使代码更具可读性。我们来看一个例子:

Stream.of(/* .. some objects .. */)
      .map(/* some function that returns a boolean */)
      .reduce(Boolean::logicalOr);

尝试用以下语言编写此内容:a || b

Stream.of(...)
      .map(...)
      .reduce((a, b) -> a || b); // logicalOr is actually using ||

不是那么可读,对吧?

正如Sotirios Delimanolis在评论中所说,您可能还想看看javadoc并关注BinaryOperator@see。或者看看javadoc的函数包摘要


答案 2

它与方法引用有关。像这样,您也可以在 lambda 中使用(逻辑或)运算符。||

以这种方式还有其他新功能,如等。Objects.isNull

使用函数引用而不是 lambda 表达式(如 lambda 表达式)更符合流和 lambda 的“外观”。
此外,方法引用将产生更少的字节代码,因此意味着更快的执行时间(至少一点)。(a,b) -> a || b


推荐