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
}
这是我的代码
@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
}