在Java 8中,Boolean
添加了类中的新方法.
我们来谈谈其中一个
public static boolean Boolean.logicalOr(boolean a , boolean b)
现在,我的问题是,他们为什么需要?
以下两种情况之间有什么区别.
boolean result = a || b;
要么 Boolean result = Boolean.logicalOr(a,b);
什么是如此特别Boolean.logicalOr()
,何时我更喜欢一个而不是另一个.
主要是那些方法是为了您的方便,并通过使用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并关注@see BinaryOperator.或者看看函数包摘要javadoc.
它与方法引用有关.像这样你也可以||
在lambdas中使用(逻辑或)运算符.
以这种方式还有其他新功能,如Objects.isNull
等.
使用函数引用而不是lambda表达式(a,b) -> a || b
更符合stream和lambda'look-and-feel'.
此外,方法引用将产生较少的字节代码,因此意味着更快的执行时间(至少一点).