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

Java代码中statusless == false触发Sonar‘移除布尔字面量false’报错如何修复

修复方案说明

报错原因

Sonar的该规则禁止布尔值直接和true/false字面量做相等比较,认为这类写法冗余,同时针对包装类Boolean的等值比较还隐含空指针风险。

可选修复方式

方案1:直接替换等值判断逻辑

用Boolean.FALSE.equals(statusless)替换statusless == false,利用常量调用equals规避空指针,同时符合Sonar规范,原有业务逻辑完全不变:

public List<LawOfficeDetailEntity> getLawOfficeByManagementUnitId(Long managementUnitId, Boolean statusless) {
    List<LawOfficeDetailEntity> entities = lawOfficeDetailRepository.findByManagementUnitType(String.valueOf(managementUnitId));
    return (statusless == null || Boolean.FALSE.equals(statusless)) ? entities.stream().filter(office -> office.getValidityStatus() == 1).collect(Collectors.toList()) : entities;
}

方案2:简化判断条件

原有判断statusless == null || statusless == false等价于「statusless不等于true」,可以直接简化为!Boolean.TRUE.equals(statusless),代码更简洁:

public List<LawOfficeDetailEntity> getLawOfficeByManagementUnitId(Long managementUnitId, Boolean statusless) {
    List<LawOfficeDetailEntity> entities = lawOfficeDetailRepository.findByManagementUnitType(String.valueOf(managementUnitId));
    return !Boolean.TRUE.equals(statusless) ? entities.stream().filter(office -> office.getValidityStatus() == 1).collect(Collectors.toList()) : entities;
}

注意事项

不要直接修改为!statusless,statusless是包装类Boolean,如果值为null时拆箱会触发空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:06