SonarLint :更改此条件,使其不总是计算为 "true"

SonarLint : Change this condition so that it does not always evaluate to "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。我应该如何更改我的方法以避免出现此警告?

如果值是一个布尔值,它既不是 TRUE 也不是 FALSE,那么它必须是 null,因为布尔对象只能是 TRUE 或 FALSE。 因此,如果它没有落入前两个 if 语句,则值始终为空,因此出现 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
    }