You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查布尔列表中是否存在至少一个为true的值并避免NPE?

报错原因

你用到的Guava Booleans.contains 方法入参是基本类型boolean[],传入包装类Boolean数组时,自动拆箱过程中遇到null值就会直接抛出NPE。

可选实现方案

方案1:Java 8+ Stream 实现(无第三方依赖,最简洁)

直接用Stream.anyMatch结合Boolean.TRUE.equals判等,自动规避null值的NPE问题:

return Stream.of(a, b, c, d).anyMatch(Boolean.TRUE::equals);

原理说明:Boolean.TRUE.equals(xx)在入参为null或者false时都会返回false,无需额外做空判断。

方案2:Guava 适配写法(保留Guava依赖)

不用转基本类型数组,改用Iterables.any判断即可:

return Iterables.any(Arrays.asList(a, b, c, d), Boolean.TRUE::equals);

方案3:低版本Java无依赖实现

如果用的Java版本低于8,也不想引入第三方依赖,可以自己封装工具方法:

private static boolean hasTrueValue(Boolean... values) {
    for (Boolean val : values) {
        if (Boolean.TRUE.equals(val)) {
            return true;
        }
    }
    return false;
}

调用方式:

return hasTrueValue(a, b, c, d);

内容的提问来源于stack exchange,提问作者DerBenniAusA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:39:05