这是我的代码@Overrideprotected 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。我应该如何改变我的方法来避免这个警告?
1 回答
猛跑小猪
TA贡献1858条经验 获得超8个赞
如果 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
}
添加回答
举报
0/150
提交
取消