其他SO帖子(1& 2)中指出了误报,其中nulls
涉及各个职能和程序。
我觉得我的情况并不复杂。
// A and B are both Double[]
if (A.length == 1 || (B != null && B.length == 1)) {
Double vol;
if (A.length == 1) {
vol = A[0];
} else {
vol = B[0]; // Sonar Blocker: Null pointers should not be deferenced
}
}
我可以通过将else
更改为else if (B != null && B.length == 1)
来解决此问题,但这样做会给我带来警告“条件(B != null && B.length == 1)
始终为真”。
我在这里错过了什么吗?
答案 0 :(得分:1)
您的代码没问题。
当B为空时,只有当A的长度为1时,控制才到达主if块内部。但是当A的长度为1时,控制从不到达else块。
PS:我也试过android studio中使用Lint并且没有警告的代码。