Java 8的Boolean.logicalOr方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

在Java中,新增了8个Boolean类中的新方法。

我们来谈谈其中的一个

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

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

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

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

有什么特别的Boolean.logicalOr(),什么时候我应该更喜欢一个。

提问于
用户回答回答于

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

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 ||

不可读,对吗?

用户回答回答于

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

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

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

扫码关注云+社区