Java Sonarint:更改此条件,使其不总是计算为;“真的”;

Java Sonarint:更改此条件,使其不总是计算为;“真的”;,java,sonarlint,Java,Sonarlint,这是我的密码 @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 Son

这是我的密码

@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);
    }
}

在“//got sonalint warning here”标记的行中,我得到警告:
更改此条件,使其不总是计算为“true”
。我应该如何更改我的方法以避免此警告?

如果值是布尔值,并且它既不是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
    }

此方法还可以获取另一个对象,例如字符串。如果您先将
null
大小写放在首位,该怎么办?已经尝试过了,在本例中,我在
Boolean.FALSE
检查中得到消息