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

这是我的代码


@Override

protected 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。我应该如何改变我的方法来避免这个警告?


幕布斯6054654
浏览 245回答 1
1回答

猛跑小猪

如果 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    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java