给定一个 boolean 值数组/列表,例如:
Boolean a = true;
Boolean b = true;
Boolean c = false;
Boolean d = null;
我想检查是否至少有一个 boolean 值为真。所以样本应该计数 true=2 (a + b)。
我试过 Guava 风格:
return Booleans.contains(
new boolean[] {a, b, c, d}, true);
但导致了 NPE。
您能否指出一个更简单的解决方案?
最佳答案
因为任何 boolean 值都可以为空:
return Stream.of(a, b, c, d).anyMatch(Boolean.TRUE::equals);
或
return Arrays.asList(a, b, c, d).contains(Boolean.TRUE);
(您不能使用 List.of
,因为它不能容忍 null)
如果您想以更命令式的方式编写它,请定义一个方法来检查真实性:
boolean isTrue(Boolean b) {
return Boolean.TRUE.equals(b);
}
然后像这样调用
return isTrue(a) || isTrue(b) || isTrue(c) || isTrue(d);
关于java - 如何检查至少一个 boolean 值是否为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69256626/