如何检查至少一个布尔值是否为真?

Der*_*usA 2 java boolean guava

给定一个布尔值数组/列表,例如:

Boolean a = true;
Boolean b = true;
Boolean c = false;
Boolean d = null;
Run Code Online (Sandbox Code Playgroud)

我想检查至少一个布尔值是否为真。因此样本应计数 true=2 (a + b)。

我尝试了番石榴风格:

return Booleans.contains(
        new boolean[] {a, b, c, d}, true);
Run Code Online (Sandbox Code Playgroud)

但结果却是NPE。

您能指出一个更简单的解决方案吗?

And*_*ner 8

由于任何布尔值都可以为空:

return Stream.of(a, b, c, d).anyMatch(Boolean.TRUE::equals);
Run Code Online (Sandbox Code Playgroud)

或者

return Arrays.asList(a, b, c, d).contains(Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)

(您不能使用,List.of因为这是不容忍 null 的)

如果您想以更命令式的方式编写它,请定义一个方法来检查真实性:

boolean isTrue(Boolean b) {
  return Boolean.TRUE.equals(b);
}
Run Code Online (Sandbox Code Playgroud)

然后调用像

return isTrue(a) || isTrue(b) || isTrue(c) || isTrue(d);
Run Code Online (Sandbox Code Playgroud)