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
检查中得到消息