为了账号安全,请及时绑定邮箱和手机立即绑定

SonarLint :更改此条件,使其不总是评估为“true”

SonarLint :更改此条件,使其不总是评估为“true”

幕布斯6054654 2023-07-19 16:14:20
这是我的代码@Overrideprotected void setValue(Object value) {    if (Boolean.TRUE.equals(value)) {        // do something for true    } else if (Boolean.FALSE.equals(value)) {        // do something for false    } else if (null == value) { // got SonarLint warning here        // do something for null    } else {        // for any other non-null and not Boolean object call the super method        super.setValue(value);    }}在标有“//此处有 SonarLint 警告”的行处,我收到警告:Change this condition so that it does not always evaluate to "true。我应该如何改变我的方法来避免这个警告?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

如果 value 是布尔值并且既不是 TRUE 也不是 FALSE,那么它必须为 null,因为布尔对象只能是 TRUE 或 FALSE。因此,如果它没有落入前两个 if 语句,则 value 始终为 null,因此会出现 sonarlint 警告。对于你的情况我会做这样的事情:


   if (value instanceof Boolean) {

        if (Boolean.TRUE.equals(value)) {

            // do something for true

        }

        else {

            // do something for false

        }

    }

    else if (value != null) {

        // for any other non-null and not Boolean object call the super method

        super.setValue(value);

    }

    else {

           // do something for null

    }


查看完整回答
反对 回复 2023-07-19
  • 1 回答
  • 0 关注
  • 244 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信